foo라는 데이터베이스와 bar라는 데이터베이스가 있습니다. foo에 tblFoobar라는 테이블이 있는데 데이터베이스 foo에서 데이터베이스 막대로 (데이터 및 모두) 이동하려고합니다. 이 작업을 수행하기위한 SQL 문은 무엇입니까?
답변
SQL Server에서? 같은 데이터베이스 서버에서? 세 부분으로 명명합니다.
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
이것은 단지 데이터를 이동시킵니다. 테이블 정의 (및 권한 및 인덱스와 같은 다른 속성)를 이동하려면 다른 작업을 수행해야합니다.
답변
SQL Server Management Studio의 “데이터 가져 오기”작업 (DB 이름을 마우스 오른쪽 단추로 클릭 한 다음 작업)이 대부분의 작업을 수행합니다. 데이터를 복사하려는 데이터베이스에서 실행하십시오.
테이블이 존재하지 않으면 테이블이 만들어 지지만 인덱스 등을 다시 만들어야 할 수도 있습니다. 테이블이 존재하면 기본적으로 새 데이터를 추가하지만 기존 데이터를 모두 삭제하도록 해당 맵핑을 편집 (매핑 편집) 할 수 있습니다.
나는 이것을 항상 사용하며 상당히 잘 작동합니다.
답변
이것은 작동해야합니다 :
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
constaint, defaults 또는 index 는 복사 하지 않습니다 . 생성 된 테이블 에는 클러스터형 인덱스 가 없습니다 .
또는 다음을 수행 할 수 있습니다.
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
대상 테이블이 존재하고 비어있는 경우
답변
그것이 하나의 테이블이라면 당신이해야 할 일은
- 스크립트 테이블 정의
- 다른 데이터베이스에서 새 테이블 만들기
- 규칙, 색인, 권한 등
- 데이터 가져 오기 (예에 대한 여러 삽입은 이미 위에 표시되어 있음)
고려해야 할 사항 중 하나는 나중에 다른 개체를 마이그레이션하는 것과 같은 다른 업데이트입니다. 소스 테이블과 대상 테이블의 이름이 동일하지 않습니다. 즉, 뷰, 저장 프로 시저 및 기타와 같은 종속 개체를 변경해야 할 수도 있습니다.
어떤 문제없이 수동으로 갈 수있는 하나 또는 여러 개의 개체를 정하십시오. 그러나 업데이트가 몇 개 이상인 경우 타사 비교 도구가 매우 유용합니다. 지금 은 스키마 마이그레이션에 ApexSQL Diff 를 사용하고 있지만 다른 도구로는 문제가 없습니다.
답변
-
스크립트는
create table
관리 스튜디오에서 테이블을 만들 줄에 해당 스크립트를 실행합니다. (오브젝트 탐색기에서 테이블을 마우스 오른쪽 버튼으로 클릭하고 스크립트 테이블을 다음으로 작성하십시오 …) -
INSERT bar.[schema].table SELECT * FROM foo.[schema].table
답변
당신은 또한 사용할 수 있습니다 생성 SQL 서버 스크립트 마법사 다음과 같은 작업을 수행 할 수 SQL 스크립트의 그것의 생성을 안내하기를 :
- 테이블 스키마 복사
- 제한 조건 (ID, 기본값 등)
- 테이블 내의 데이터
- 필요한 경우 다른 많은 옵션
스크린 샷이 표시된 SQL Server 2008의 좋은 워크 플로 예는 다음과 같습니다 .
답변
이 방법으로 갈 수 있습니다 : (일반적인 예)
insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers
또한 insert 절에 넣고 열 이름을 생성 해야하는 경우 다음을 사용하십시오.
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName')
결과를 복사하여 쿼리 창에 붙여 넣어 테이블 열 이름을 나타내면 ID 열도 제외됩니다.
select (name + ',') as TableColumns from sys.columns
where object_id = object_id('YourTableName') and is_identity = 0
데이터베이스가 동일한 위치에있는 경우 행을 복사하는 스크립트가 작동합니다.
당신은 이것을 시도 할 수 있습니다.
select * into <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>
두 DB가 동일한 서버에있는 경우 서버 이름은 선택 사항입니다.