DISCLAIMER : 이 질문은 스택 오버플로 질문 여기 와 유사하지만 해당 답변 중 어느 것도 작동하지 않습니다. 내 문제에 대해서는 나중에 설명하겠습니다.
많은 열이 인덱싱 된 postgres에서 큰 테이블 (~ 4 천만 행, 100+ 열)을 복사하려고합니다. 현재이 SQL 비트를 사용합니다.
CREATE TABLE _copy (LIKE INCLUDING ALL);
INSERT INTO _copy SELECT * FROM ;
이 방법에는 두 가지 문제가 있습니다.
기적 명령으로 정확한 복사본을 만들거나, 가능하지 않은 경우 모든 금기 사항이 있지만 인덱스없이 테이블을 복사하고 확인하는 것입니다. 그것들은 '정신'(일명 SERIAL 컬럼의 새로운 카운터)의 제약입니다. 그런 다음 SELECT *
를 사용하여 모든 데이터를 복사 한 다음 모든 인덱스를 복사합니다.
소스
데이터베이스 복사에 대한 스택 오버플로 질문 : 이건 제가 아닙니다. 세 가지 이유를 묻습니다
pg_dump -t x2 | sed 's / x2 / x3 / g'| psql
그리고이 설정에서는 명령 줄에 액세스 할 수 없습니다. 의 증거로 직렬 열을 올바르게 업데이트하지 않습니다. default nextval ( 'x1_id_seq':: regclass)
postgres 테이블의 시퀀스 값을 재설정하는 방법 : 이것은 훌륭하지만 안타깝게도 매우 수동입니다.