SELECT INTO (테이블 및 데이터 복사)
INSERT INTO SELECT (데이터 복사)
테이블 구조 및 데이터 복사
원본테이블과 동일 구조의 테이블을 생성 후 데이터 복사
1 2 3 |
SELECT 컬럼명 INTO 대상테이블명 FROM 원본테이블명 WHERE 조건 |
테이블 구조 복사
원본테이블과 동일 구조의 테이블만 생성
1 2 3 |
SELECT 컬럼명 INTO 대상테이블명 FROM 원본테이블명 WHERE 1=2 |
데이터 복사
테이블의 내용을 대상테이블에 복사
1 2 3 |
INSERT INTO 대상테이블명 (컬럼명) SELECT 컬럼명 FROM 원본테이블명 WHERE 조건 |
다른 서버DB로 데이터 복사
1 2 3 |
INSERT INTO [서버주소].대상테이블명 (컬럼명) SELECT 컬럼명 FROM 원본테이블명 WHERE 조건 |
[주의]
다른 서버DB로 테이블 및 데이터 복사할때 트랜잭션은 걸 수 없다.
만일 아래와 같은 SQL을 수행한다면!
1 2 3 4 5 6 7 |
BEGIN TRAN INSERT INTO [서버주소].대상테이블명 (컬럼명) SELECT 컬럼명 FROM 원본테이블명 WHERE 조건
--COMMIT TRAN --ROLLBACK TRAN |
다음과 같은 오류 메세지를 보게 될 것이다.
연결된서버"xxx.xxx.xxx.xxx"의OLE DB 공급자"SQLNCLI10"이(가) 메시지"트랜잭션관리자가원격/네트워크트랜잭션에대한지원을할수없습니다."을(를) 반환했습니다.
메시지7391, 수준16, 상태2, 줄2
연결된서버"xxx.xxx.xxx.xx"의OLE DB 공급자"SQLNCLI10"이(가) 분산트랜잭션을시작할수없으므로요청한작업을수행할수없습니다.
[출처] [MSSQL] SELECT INTO [테이블 복사], INSERT INTO SELECT [데이터 복사]|작성자 꽁쥐