본문 바로가기
프로그래밍/데이터베이스

Oracle에서 테이블 복사하기

by pentode 2018. 4. 20.

테이블 구조를 수정하거나 데이터의 조정이 필요해서 원본 테이블을 복사하여 작업하는 경우가 가끔 있습니다. 이럴 경우 사용할 수 있는 방법을 알아보겠습니다.



1. 임시 테이블 생성과 동시에 복사하기


TB_BOARD 라는 이름의 테이블을 TB_BOARD_TMP 라는 동일한 구조의 테이블을 만들고 데이터를 복사하는 방법입니다.


CREATE TABLE TB_BOARD_TMP AS SELECT * FROM TB_BOARD;


이 명령으로 임시 테이블의 생성과 데이터의 복사를 동시에 할 수 있습니다. 이 때 키와 인덱스는 생성되어지지 않습니다. 필요하다면 별도로 생성하여야 합니다.



2. 임시 테이블을 따로 만들고 데이터를 복사하는 방법입니다.


2-1. 테이블 구조가 동일할 때


INSERT INTO TB_BOARD_TEMP SELECT * FROM TB_BOARD;


필요하다면 SELECT 에 WHERE 절을 사용하여 부분적인 데이터만 복사할 수도 있습니다.


2-2. 테이블 구조가 다를 때


INSERT INTO TB_BOARD_TEMP (NUM, TITLE, CONTENTS)

SELECT NUM, TITLE, CONTENTS FROM TB_BOARD;


테이블 구조가 다르면 복사하고자 하는 필드명을 나열해 줍니다. 대응되는 필드의 이름이 같을 필요는 없고, 타입과 같고, 길이는 대상쪽이 크거나 같아야 합니다. NOT NULL 필드는 빼먹으면 오류가 나므로 주의해야 합니다.

반응형