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 문을 통해 결과 값을 한 번 확인하고 컬럼명 매칭에 신경을 좀 쓰면 따로 스크립트를 짜지 않고도 데이터 마이그레이션이 가능했다. (단, 차분히 천천히 해야 한다.)
'웹 프로그램' 카테고리의 다른 글
우분투 무료 ssl 설정 (nginx + Let's Encrypt) 자동갱신까지 (0) | 2023.01.19 |
---|---|
phpmyadmin 로그인 시 #1193 - Unknown system variable 'lc_messages' 오류 (0) | 2020.08.01 |
MySQL Where 절에 배열값으로 쿼리하기 (0) | 2020.07.02 |
[팁] - mysql 컬럼내 문자열 변경하기 (0) | 2020.04.07 |