A테이블에서 데이터를 뽑아서 B 테이블로 옮기는 방법

INSERT INTO Table-B
SELECT * FROM Table-A

데이터베이스 마이그레이션은 되도록 하고 싶지 않은 작업이다. 작업 전에 백업을 해놔야 하고 한 단계 한 단계 실험하면서 조심스럽게 진행을 해야 한다. (하늘은 스스로 백업하는 자를 돕는다) 얼마전 작업했던 마이그레이션 관련 자료를 기록으로 남겨 놓고자 이 글을 작성한다. 테이블 A에서 데이터를 뽑아서 테이블 B로 옮겨야 할 일이 있었다. 보통은 스크립트를 짜서 해결을 하지만 이번에는 양이 좀 많아서 MySQL 콘솔에서 직접 명령어를 입력해서 이전했다. 

 

1. 테이블 A 와 테이블 B의 구조가 같고 테이블 A 의 데이터를 테이블 B에 붙여넣는 경우이다. 

INSERT INTO Table-B
SELECT * FROM Table-A

 

2. 테이블 A 와 테이블 B의 구조가 다른 경우 컬럼을 특정해서 데이터를 복사할 수 있다. 

INSERT INTO Table-B
(컬럼명1, 컬럼명2, 컬럼명3)
SELECT 컬럼명1, 컬럼명2, 컬럼명3
FROM Table-A

당연한 얘기지만 컬럼명은 순서대로 매칭된다. 이 경우 테이블의 구조가 다르더라고 복사가 가능하다. 또한 SELECT 문에 WHERE 절이나 ORDER BY 나 GROUP BY 도 적용 가능하다. 

 

INSERT INTO item 
	(id, name, tel) 
SELECT id, name, tel 
FROM user 
WHERE work = 'on'
ORDER BY id

위 예시처럼 WHERE 조건과 ORDER BY 함께 사용해서 쿼리문을 만들 수 있다. SELECT 문을 통해 결과 값을 한 번 확인하고 컬럼명 매칭에 신경을 좀 쓰면 따로 스크립트를 짜지 않고도 데이터 마이그레이션이 가능했다. (단, 차분히 천천히 해야 한다.)

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기