가끔 기존에 있는 테이블을 그대로 두고, 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