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 데이터베이스로 복사됩니다.
반응형
'코딩ㆍ개발 정보 > 데이터베이스 연습' 카테고리의 다른 글
[MySQL] 문자 인코딩 설정 확인 (0) | 2024.08.21 |
---|---|
[MSSQL] 특정 구간 날짜, 시간 구하기 쿼리 (0) | 2024.07.18 |
MSSQL 에서 password 컬럼에 SHA2_256 수동 업데이트 하기 (0) | 2024.07.08 |
MSSQL 저장 프로시저 내용 검색하기, 소스 보는 방법 (0) | 2024.06.25 |
MSSQL 다이어그램, 소유자가 없으므로 에러 (0) | 2024.06.25 |