-
[MSSQL] 테이블 복사(テーブルコピー)SQL Server 2021. 11. 3. 23:09
본인이 잊어버리지 않기위해 쓰는 블로그
주의점
테이블복사는 데이터는 복사되지만
키, 제약조건, 인덱스는 복사되지 않는다.
기존 테이블과 동일하게 생성하려면 아래 사진처럼 스크립팅을 활용.
◎ 동일 서버 내 테이블 복사
▶ 복사할 테이블이 존재하지 않을 경우123SELECT * INTO 생성할테이블FROM 대상테이블WHERE 조건cs 테이블 구성요소만 복사할 경우 WHERE조건에 『1=2』
1WHERE 1 = 2cs 데이터까지 복사할 경우 WHERE조건에 『1=1』 혹은 WHERE조건 쓰지않기
1WHERE 1 = 1cs 원하는 컬럼만 특정해서 테이블복사하려면?
1234SELECT * INTO 생성할테이블FROM (SELECT col1, col2, ..FROM 대상테이블) AS 임의AliasWHERE 조건cs ▶ 복사할 테이블이 존재하는 경우
12INSERT INTO 생성할테이블SELECT * FROM 대상테이블cs ◎ 다른 서버에 테이블 복사
▶ 연결된 서버(Linked Server) 이용
※테이블이 복사되어질 서버에서 실행할 것
123SELECT * INTO 생성할테이블FROM 연결된서버명.DB명.스키마.대상테이블WHERE 조건cs ▶ OPENDATASOURCE를 이용
123SELECT * INTO 생성할테이블FROM OPENDATASOURCE('SQLOLEDB','Driver=SQL Server;Server=대상서버명;UID=유저명;PWD=패스워드').DB명.스키마.대상테이블WHERE 조건cs ▶ OPENROWSET를 이용
※아래처럼 원하는 컬럼만 뽑아서 테이블복사도 가능
123456SELECT * INTO 생성할테이블FROM (SELECT col1, col2, ..FROM OPENROWSET('SQLOLEDB','Driver=SQL Server;Server=대상서버명;UID=유저명;PWD=패스워드',DB명.스키마.대상테이블)) AS 임의AliasWHERE 조건cs ▶ OPENQUERY를 이용
123SELECT * INTO 생성할테이블FROM OPENQUERY(연결된서버명, 'SELECT col1, col2, .. FROM 대상테이블 WHERE 조건')cs ※조건에 문자열을 넣을경우 'string'이 아닌 ''string''로 「'」를 2번씩 붙여준다
123SELECT * INTO 생성할테이블FROM OPENQUERY(연결된서버명, 'SELECT * FROM 대상테이블 WHERE col1 = ''문자열'' ')cs 'SQL Server' 카테고리의 다른 글
[MSSQL] 사용자계정(SID) Mapping (0) 2022.04.09 [MSSQL] 조건문 (CASE WHEN) (0) 2021.11.06 [MSSQL] 데이터베이스 백업(Database Backup) (0) 2021.11.06 [MSSQL] 백업디바이스(Backup Device) (0) 2021.11.06 [MSSQL] Ad Hoc 옵션 유효화 (1) 2021.11.06