데이터베이스 DB에 ABC 테이블이 있습니다. 동일한 DB에 이름이 ABC_1, ABC_2, ABC_3 인 ABC의 복사본을 만들고 싶습니다. Management Studio (권장) 또는 SQL 쿼리를 사용하여 어떻게 할 수 있습니까?
SQL Server 2008 R2 용입니다.
데이터베이스 DB에 ABC 테이블이 있습니다. 동일한 DB에 이름이 ABC_1, ABC_2, ABC_3 인 ABC의 복사본을 만들고 싶습니다. Management Studio (권장) 또는 SQL 쿼리를 사용하여 어떻게 할 수 있습니까?
SQL Server 2008 R2 용입니다.
답변:
사용 SELECT ... INTO
:
SELECT *
INTO ABC_1
FROM ABC;
이렇게하면 ABC_1
열 구조 ABC
가 같고 동일한 데이터를 포함 하는 새 테이블이 생성 됩니다. 그러나 제약 조건 (예 : 키, 기본값)은 복사되지 않습니다.
매번 다른 테이블 이름으로이 쿼리를 여러 번 실행할 수 있습니다.
데이터를 복사 할 필요가없는 경우 동일한 열 구조로 새 빈 테이블을 생성 WHERE
하기 위해서만 허위 표현식이 있는 절을 추가합니다 .
SELECT *
INTO ABC_1
FROM ABC
WHERE 1 <> 1;
SELECT TOP(0) *
항상 거짓보다 청소기를 WHERE
문 방법
SSMS에서 개체 탐색기 에서 데이터베이스를 확장하고 테이블 로 이동하여 관심있는 테이블을 마우스 오른쪽 단추로 클릭하고 다음으로 스크립트 테이블 , 만들기 대상 , 새 쿼리 편집기 창을 선택 합니다. 검색 (find)를하고 (대체 CTRL + H를 (넣어 즉 테이블 이름을 변경) ABC
에 어떤 찾기 필드 ABC_1
에 바꿀 클릭 한 다음 확인을 ).
SQL로 이것을 수행하는 방법을 보여주는 다른 답변도 잘 작동하지만이 방법의 차이점은 인덱스, 제약 조건 및 트리거도 얻을 수 있다는 것입니다.
데이터를 포함하려면이 테이블을 만든 후 아래 스크립트를 실행하여 ABC의 모든 데이터를 복사합니다 (ID 필드가있는 경우 동일한 ID 값 유지).
set identity_insert ABC_1 on
insert into ABC_1 (column1, column2) select column1, column2 from ABC
set identity_insert ABC_1 off
IDENTITY_INSERT
하려면 ON 으로 설정해야합니다 . 예제에서 순서를 혼합했습니다. 또한 열을 명시해야합니다
모든 제약 조건 및 키를 사용하여 테이블을 복제하려면 다음 단계를 따르십시오.
그런 다음 데이터를 복사하려면 아래 스크립트를 실행하십시오.
SET IDENTITY_INSERT DuplicateTable ON
INSERT Into DuplicateTable ([Column1], [Column2], [Column3], [Column4],... )
SELECT [Column1], [Column2], [Column3], [Column4],... FROM MainTable
SET IDENTITY_INSERT DuplicateTable OFF
이것은 또 다른 옵션입니다.
select top 0 * into <new_table> from <original_table>