MySQL에서는 INSERT INTO ... SELECT 구문을 활용하면 한 데이터베이스에 있는 테이블의 데이터를 다른 데이터베이스의 테이블로 간단하게 복사할 수 있습니다.
기본 문법
테이블을 한 데이터베이스에서 다른 데이터베이스로 복사하는 기본 문법은 다음과 같습니다.
INSERT INTO 대상데이터베이스명.대상테이블명 SELECT * FROM 원본데이터베이스명.원본테이블명;
이제 실제 예제를 통해 복사 과정을 단계별로 살펴보겠습니다.
1단계: 원본 테이블 생성
먼저 CREATE 명령어를 사용해 'business' 데이터베이스에 새로운 테이블을 생성합니다.
<business>
mysql> use business; Database changed mysql> create table OriginalTable -> ( -> id int -> ); Query OK, 0 rows affected (0.46 sec)
2단계: 대상 테이블 생성
복사될 데이터를 담을 테이블을 'test' 데이터베이스에 동일한 구조로 생성합니다.
<test>
mysql> use test; Database changed mysql> create table OriginalTable -> ( -> id int -> ); Query OK, 0 rows affected (0.47 sec)
3단계: 원본 테이블에 데이터 삽입
INSERT 명령어를 사용하여 첫 번째 테이블('business' 데이터베이스)에 레코드를 삽입합니다.
mysql> use business; Database changed mysql> insert into OriginalTable values(1),(2),(3),(4); Query OK, 4 rows affected (0.18 sec) Records: 4 Duplicates: 0 Warnings: 0
삽입된 모든 레코드를 확인해 보겠습니다.
mysql> select * from OriginalTable;
실행 결과는 다음과 같습니다.
+------+ | id | +------+ | 1 | | 2 | | 3 | | 4 | +------+ 4 rows in set (0.00 sec)
4단계: 테이블 복사 실행
이제 'business' 데이터베이스의 OriginalTable을 'test' 데이터베이스로 복사합니다.
mysql> INSERT INTO test.OriginalTable SELECT * FROM business.OriginalTable; Query OK, 4 rows affected (0.20 sec) Records: 4 Duplicates: 0 Warnings: 0
5단계: 복사 결과 확인
테이블이 정상적으로 복사되었는지 확인해 보겠습니다.
mysql> use test; Database changed mysql> select * from OriginalTable;
아래 출력 결과를 보면 'OriginalTable'이 두 번째 데이터베이스('test')로 성공적으로 복사된 것을 확인할 수 있습니다.
+------+ | id | +------+ | 1 | | 2 | | 3 | | 4 | +------+ 4 rows in set (0.00 sec)
참고 사항
위 방법은 테이블의 데이터만 복사합니다. 만약 인덱스, 기본 키, 외래 키 등 테이블 구조까지 함께 복사하고 싶다면 먼저 CREATE TABLE ... LIKE 구문으로 구조를 복제한 후, INSERT INTO ... SELECT로 데이터를 옮기는 것이 좋습니다.
CREATE TABLE test.OriginalTable LIKE business.OriginalTable; INSERT INTO test.OriginalTable SELECT * FROM business.OriginalTable;