[PostgreSQL] 테이블 Copy 하는 법

식빵·2023년 3월 7일
0

postgresql-memo

목록 보기
7/34

가끔 기존에 있는 테이블을 그대로 두고, Table 복사본을 만들어서 이것저것
테스트를 하거나 또는 단순 백업용으로 보관하고 싶은 경우가 있다.
이럴 때는 아래 3개의 쿼리만 알아도 상당히 도움이 많이 된다.


테이블 구조 및 데이터 복사

create table sample_schema.copy_table 
	as select * from sample_schema.random_point;

테이블 구조만 복사

create table sample_schema.copy_table 
	(like sample_schema.random_point)

구조, 인덱스, 제약조건, 데이터 모두 복사하기

-- 테이블 구조 + 인덱스 + constraint 등 모~두 복사하여 테이블 새로 생성
create table 
	sample_schema.copy_table
    	(like sample_schema.random_point including all);

-- 데이터 복사
insert into
	sample_schema.copy_table
    	(select * from sample_schema.random_point);

주의!
만약에 데이터 구조를 복사하는 테이블에 serial 컬럼이 있으면,
복사본 테이블의 컬럼에서 사용하는 serial 의 sequence 는 오리지날 테이블의
serial sequence 를 사용한다!!! 주의 !!!

create table
    manage_user
        (like plan_auth_user including all);



select nextval(pg_get_serial_sequence('plan_auth_user', 'id')); commit;
-- 여기서 읽힌 숫자보다 큰 숫자가 사용됨.
-- insert 를 하여서 테스트해보세요!

참고: https://dba.stackexchange.com/questions/91632/copy-table-with-separate-sequences-for-serial-columns

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글