SQL 다른 테이블로 복사 붙여넣기 방법

SQL에서 테이블을 다루다 보면 특정 테이블에 있는 데이터를 다른 테이블에 백업해두고 싶을 때가 있습니다. 이런 경우 테이블 자체를 백업하지 않더라도 간단한 쿼리를 통해 작업이 가능합니다.

테이블 데이터 백업

1. 새로운 테이블로 데이터를 모두 백업

아래의 쿼리는 old_table이라는 테이블의 모든 데이터를 가져와 new_table이라는 이름의 새 테이블을 생성하는 것을 의미합니다.

CREATE TABLE new_table AS SELECT * FROM old_table;
  • new_table : 새로 만드는 테이블 이름입니다.
  • old_table : 원본 테이블 이름입니다.

 

2. 기존 테이블의 일부 데이터만 백업

WHERE 절 조건을 줄 수도 있습니다.

CREATE TABLE new_table AS SELECT * FROM old_table WHERE condition;

 

3. 테이블 구조만 복사

테이블의 데이터는 가져오지 않고 테이블의 구성(컬럼 등)만 가져오려면 WHERE 0=1 조건을 넣어서 쿼리합니다. WHERE 0=1은 항상 거짓인 조건입니다. 이 조건을 사용하면 SQL 쿼리의 결과로 어떤 행도 반환되지 않습니다.

CREATE TABLE new_table AS SELECT * FROM old_table WHERE 0=1;

 

4. 이미 존재하는 테이블에 데이터 추가

INSERT INTO existing_table SELECT * FROM old_table;

 

예시 1) 전체 데이터 백업

우선 employees라는 테이블을 만들고 간단하게 샘플 테이터를 넣어보겠습니다.

 

employees 샘플 데이터 생성

 

employees_backup이라는 테이블을 생성하고 employees 테이블의 모든 데이터를 그 안에 복사합니다.

CREATE TABLE employees_backup AS SELECT * FROM employees;

모든 테이터 복사

 

예시 2) 데이터를 필터링해서 백업

employees 테이블에서 'Doe'라는 last_name을 가진 직원들만 선택하여 doe_employees라는 새로운 테이블을 만듭니다.

CREATE TABLE doe_employees AS SELECT * FROM employees WHERE last_name = 'Doe';

 

where 절 조건 걸기

 

예시 3) 데이터 구조만 백업

employees_structure라는 빈 테이블을 생성하되, 이 테이블의 구조는 employees 테이블의 구조와 동일하게 합니다.

CREATE TABLE employees_structure AS SELECT * FROM employees WHERE 0=1;

 

테이블 구조만 복사

 

예시 4) 이미 존재하는 데이블에 데이터 추가

이미 존재하는 employees_backup 테이블에 employees 테이블의 데이터를 추가합니다.

INSERT INTO employees_backup SELECT * FROM employees;

 

insert로 추가

 

이런 방식으로 데이터베이스 테이블의 데이터를 복사 / 붙여넣기 할 수 있습니다. 임의로 백업이 가능한 셈입니다. 그러나 완전한 백업은 데이터베이스의 백업 기능을 이용해서 생성해야 합니다.

반응형

댓글

Designed by JB FACTORY