특정 테이블 및 항목 Postgres에 대한 데이터베이스 덤프 만들기


94

수백 개의 테이블이있는 데이터베이스가 있는데, 내가해야 할 일은 지정된 테이블을 내보내고 데이터에 대한 명령문을 하나의 SQL 파일에 삽입하는 것입니다.

이것을 달성 할 수있는 유일한 진술은

pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql

각각의 모든 테이블에 대해이 문을 실행해야합니까, 아니면 비슷한 문을 실행하여 선택한 모든 테이블을 하나의 큰 SQL Big으로 내보내는 방법이 있습니까? 위의 pg_dump는 삽입 만 테이블 스키마를 내 보내지 않으며 둘 다 필요합니다.

도움을 주시면 감사하겠습니다.

답변:


160

설명서 에서 바로 : " -t 스위치를 여러 개 작성하여 여러 테이블을 선택할 수 있음 "

따라서 모든 테이블을 나열해야합니다.

pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql  

동일한 접두사 (또는 접미사)가있는 여러 테이블이있는 경우 와일드 카드를 사용하여 -t매개 변수 와 함께 선택할 수도 있습니다 .

" 또한 테이블 매개 변수는 psql의 \ d 명령에서 사용하는 것과 동일한 규칙에 따라 패턴으로 해석됩니다. "


20
-T 스위치는 동일한 방식이지만 테이블을 제외하는 데 사용됩니다. 테이블이 하나 또는 두 개를 제외하고 모두 필요한 경우 유용 할 수 있습니다.
Scott Marlowe

4
-D옵션은 PG 9.1 이후 사라진 것 같습니다
Epigene

5
-D옵션은 버전 8.4에서 제거되었습니다 . --column-inserts대신 지금 사용해야 합니다.
mlovic

1
pg_dump --host 127.0.0.1 --port 5432 --username "<username>"--column-inserts --verbose --file "/ tmp / <filename.sql>"--table "^ <regex> *를 사용해보십시오. ""<TABLENAME> "
Tharindu Jayasuriya

22

특정 테이블이 특정 정규식과 일치하는 경우 pg_dump의 -t 옵션에서 정규식을 사용할 수 있습니다.

pg_dump -D -a -t zones_seq -t interway -t "<regex>" -f /tmp/zones_seq.sql <DBNAME>

예를 들어 "test"로 시작하는 테이블을 덤프하려면 다음을 사용할 수 있습니다.

pg_dump -D -a -t zones_seq -t interway -t "^test*" -f /tmp/zones_seq.sql <DBNAME>

3
정규식이라면 ^test.*대신 해야하지 ^test*않습니까?
msrd0

5
정규식이 아니라 postgres의 "패턴"을 사용하므로 실제로는 "test*"다음과 같아야합니다 . postgresql.org/docs/current/app-psql.html#APP-PSQL-PATTERNS
elliotcm

정규식을 사용하는 것은 간단하지 않으며 잘못된 정규식을 생성 합니다. 수량 자 피연산자 잘못된 오류입니다. 하지만 정규식은 정확합니다 ... 아주 간단한 정규식 만 유효합니다
Peter Krauss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.