새소식

반응형
Database/MSSQL Server

MSSQL_테이블 복사,데이터 복사

  • -
반응형

작업을 하다보면 , 백업을 위해서 테이블 전체를 복사하거나 몇가지 통계 정보 또는 샘플 데이터 추출을 위해서 몇건의 데이터를 복사하는 경우가 많습니다.

이러한 복사 방법과 복사시 어떻게 되는지 자세히 정리하고자 포스트를 작성 하였습니다.


여기서 중요한 것은 테이블을 복사하면, 컬럼,데이터만 복사 됩니다. 즉 인덱스 제약조건 등은 복사되지 않습니다.

이점을 유의해서 테이블 복사를 사용 하셔야 합니다.


예제를 위해서 테이블을 생성하고, 값을 입력 하였습니다.


USE workDB

GO

 

CREATE TABLE Copy_Tbl

(

 Col1      INT

,Col2      VARCHAR(10)

)

GO

 

INSERT INTO Copy_Tbl VALUES (1,'주형권1')

INSERT INTO Copy_Tbl VALUES (2,'주형권2')

INSERT INTO Copy_Tbl VALUES (3,'주형권3')

 

SELECT * FROM Copy_Tbl

위의 테이블 생성 결과값은 아래와 같습니다.


위와 같이 입력하고, 여러가지 상황에 따라서 복사를 테스트 하면 다음과 같습니다.


1. 테이블 생성과 동시에 데이터 복사 

/*테이블 생성과 함께 복사

FROM 절의 Copy_Tbl을 복사하여, Copy1_Tbl 테이블 생성하며 데이도 복사

*/

SELECT * INTO Copy1_Tbl

FROM Copy_Tbl


Copy1_Tbl 조회 결과 입니다.


2. 테이블을 생성과 동시에 원하는 컬럼의 데이터만 복사

/*테이블 생성과 함께 복사 / 원하는 컬럼만 지정

FROM 절의 Copy_Tbl을 복사하여, Copy2_Tbl 테이블 생성하며 데이도 복사

여기서 원하는 컬럼을 따로 복사 가능합니다. 물론 생성되는 테이블에는 원하는

컬럼만 입력됩니다.

*/

SELECT Col1 INTO Copy2_Tbl

FROM Copy_Tbl


Copy2_Tbl 조회 결과 입니다.



3. 테이블을 생성과 동시에 테이블 구조만 복사

/*테이블 생성 / 테이블 구조만 복사

테이블을 복사하여, 새로운 테이블로 사용하고자 하는 경우가 있습니다. 하지만 이 경우 인덱스 및 제약조건 

등이 복사되지 않으므로 주의해야 합니다해당 내용은 단순히 데이터 백업 용도 및 기록을 위한 백업에만

사용하길 권장 드립니다.

*/

SELECT Col1 INTO Copy3_Tbl

FROM Copy_Tbl

WHERE 1=2


Copy3_Tbl 조회 결과 입니다.



4. 테이블을 생성과 동시에 원하는 데이터만 복사

/*테이블 생성과 함께 복사 / 특정 ROW만 복사

가끔씩 개발자 OR 팀에게 조회 권한을 따로 부여하여, 테이블 SELECT만 가능하도록 하기 위해

특정 ROW를 복사하여, 테이블을 만들어 주고자 하는 경우가 있습니다. 이때 다음과 같은 쿼리를

이용하면 특정 ROW만 복사가 가능합니다.

*/

SELECT * INTO Copy4_Tbl

FROM Copy_Tbl

WHERE Col1 = 2


Copy4_Tbl 조회 결과 입니다.



5. 이미 생성된 테이블에 데이터만 복사

-- 테이블 생성

CREATE TABLE Copy5_Tbl

(

 Col1      INT

,Col2      VARCHAR(10)

)

GO

 

/*이미 생성된 테이블에 데이터만 복사

이미 생성된 테이블에 특정 값만 복사하여, 입력할 경우에 사용 합니다. 또는 구조 및 인덱스 제약조건등

모든 구조를 완벽히 복사한 테이블에 데이터만 넣고자 하는 경우에 사용 합니다.

 

마이닝을 할 경우에 위와 같이 구조를 완전히 복사하여, 값을 복사 한뒤 RE_NAME 시키는 방법을 주로

사용 합니다.

*/

INSERT INTO Copy5_Tbl

SELECT * FROM Copy_Tbl


Copy5_Tbl 조회 결과 입니다.



위의 내용을 응용하여, 통계 데이터 추출 및 복사를 하는 경우가 빈번하며, 응용하면 JOIN / GROUP BY 등의 작업을 통해 원하는 값만 집어 넣을 수도 있습니다.

데이터 복사 및 테이블 복사는 아주 기본적인 내용이지만 여러 경우에서 자주 사용하는 아주 중요한 내용입니다.




반응형

'Database > MSSQL Server' 카테고리의 다른 글

MSSQL 옵티마이저(optimizer)  (0) 2015.06.27
MSSQL Server 설정  (0) 2015.06.25
DBA 업무시 필요한 쿼리  (0) 2015.06.04
MS SQL Server_952 Error  (0) 2015.04.09
MSSQL_파일그룹 백업 및 복원  (0) 2015.04.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.