MySQL 테이블 백업, 복사하는 방법
DB 작업을 하다 보면 데이터를 백업해야 할 때가 있습니다. 특히 UPDATE나 DELETE 등 데이터에 수정이 발생하는 작업을 하기 전에는 백업이 중요합니다. DB 자체를 풀백업 해버리면 가장 좋겠지만 데이터가 많이 쌓여 있는 경우에는 백업 자체만으로도 너무 오랜 시간이 걸리기에 일부 데이터나 테이블만을 복사해 두기도 합니다.

최근에 근무하던 회사에서 동료가 데이터를 잘못 조작하였다가 다행히 백업해 두었던 데이터가 있어서 겨우 복구했던 웃픈 일이 있어 생각난김에 MySQL에서 테이블을 복사하는 두가지 방법에 대해서 알아보도록 하겠습니다.




첫번째 방법 CREATE TABLE ... SELECT 구문
MySQL에서는 CREATE TABLE 생성 테이블명 (SELECT 서브쿼리) 구문을 이용해 테이블을 복사할 수 있습니다.
다음은 employees 테이블을 그대로 복사하여 employees_copy 테이블을 생성하는 방법입니다. 똑같은 스키마와 데이터가 복사되어집니다.
CREATE TABLE employees_copy
(SELECT * FROM employees);
cs

이 구분을 응용하면 서브쿼리 부분에서 특정 컬럼을 지정하거나 WHERE 절을 잘 작성하는경우 원하는 데이터만을 뽑아서 테이블을 생성할 수 있습니다. 단!!! PK나 FK 등의 제약 조건은 복사되지 않습니다.





두번째 방법 CREATE TABLE 테이블A LIKE 테이블B 구분
두번째 방법은 첫번째 방법에 비해 조금 더 귀찮을 수 있는데, CREATE TABLE 테이블A LIKE 테이블B 구문을 통해 테이블B와 똑같은 구조의 테이블A를 생성한 이후 INSERT INTO 테이블A SELECT * FROM 테이블B를 통해 데이터를 복사하여 INSERT 하는 방법입니다.
CREATE TABLE employees_copy LIKE employees;
 
 
INSERT INTO employees_copy
(SELECT * FROM employees WHERE emp_no < 10003);
 
cs

마찬가지로 INSERT 시에 서브쿼리를 조정하여 원하는 데이터만을 복사할 수 있습니다.

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!