본문 바로가기

 

MySQL에서 한 데이터베이스(A)에서 다른 데이터베이스(B)로 테이블을 복사하려면, 다음 단계를 수행할 수 있습니다. 이 과정에서는 테이블 구조(CREATE TABLE)와 데이터를 모두 복사하는 방법을 설명합니다.

 

1. 테이블 구조 복사 (CREATE TABLE)

먼저, A 데이터베이스에서 테이블의 구조를 B 데이터베이스로 복사합니다.

CREATE TABLE B.테이블명 LIKE A.테이블명;

 

위 SQL은 A 데이터베이스의 테이블명과 동일한 구조를 B 데이터베이스에 복사합니다.

2. 데이터 복사 (INSERT INTO SELECT)

구조를 복사한 후, 데이터를 복사합니다.

INSERT INTO B.테이블명 SELECT * FROM A.테이블명;

 

위 SQL은 A 데이터베이스의 테이블명에 있는 모든 데이터를 B 데이터베이스의 동일한 테이블로 복사합니다.

3. 여러 테이블 복사하기

위 과정을 여러 테이블에 대해 반복하면 됩니다. 예를 들어, 5개의 테이블을 복사하려면 각각의 테이블에 대해 위의 SQL을 실행합니다.

CREATE TABLE B.table1 LIKE A.table1;
INSERT INTO B.table1 SELECT * FROM A.table1;

CREATE TABLE B.table2 LIKE A.table2;
INSERT INTO B.table2 SELECT * FROM A.table2;

CREATE TABLE B.table3 LIKE A.table3;
INSERT INTO B.table3 SELECT * FROM A.table3;

CREATE TABLE B.table4 LIKE A.table4;
INSERT INTO B.table4 SELECT * FROM A.table4;

CREATE TABLE B.table5 LIKE A.table5;
INSERT INTO B.table5 SELECT * FROM A.table5;

 

4. 한 번에 모든 테이블 복사하기 (자동화 스크립트)

만약 여러 테이블을 한 번에 복사하고 싶다면, 아래와 같은 스크립트를 작성하여 한 번에 수행할 수 있습니다.

-- 1. 데이터베이스 A의 테이블 목록을 가져오기
SET @tables = NULL;
SELECT GROUP_CONCAT(table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'A';

-- 2. 루프를 돌면서 각각의 테이블을 B로 복사
SET @tables = CONCAT('CREATE TABLE B.', REPLACE(@tables, ',', ' LIKE A.,'), ' LIKE A.', ';');
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SET @tables = CONCAT('INSERT INTO B.', REPLACE(@tables, ',', ' SELECT * FROM A.,'), ' SELECT * FROM A.', ';');
PREPARE stmt FROM @tables;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

이 스크립트는 모든 테이블을 자동으로 복사하지만, 이는 좀 더 복잡한 작업입니다. 간단하게 진행하고자 한다면, 위에 설명한 방법을 개별적으로 실행하는 것이 좋습니다.

위 명령어들을 MySQL 콘솔에서 실행하면, A 데이터베이스의 5개의 테이블이 B 데이터베이스로 복사됩니다.

반응형

코카티비-CoCaTV

생활하면서 불편한 것들, 생활하면서 다음에 또 찾게 될 것 같은 것들, 기록 해뒀습니다.