[postgresql] 특정 테이블 및 항목 Postgres에 대한 데이터베이스 덤프 만들기
수백 개의 테이블이있는 데이터베이스가 있는데, 내가해야 할 일은 지정된 테이블을 내보내고 데이터에 대한 명령문을 하나의 SQL 파일에 삽입하는 것입니다.
이것을 달성 할 수있는 유일한 진술은
pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql
각각의 모든 테이블에 대해이 문을 실행해야합니까, 아니면 비슷한 문을 실행하여 선택한 모든 테이블을 하나의 큰 SQL Big으로 내보내는 방법이 있습니까? 위의 pg_dump는 삽입 만 테이블 스키마를 내 보내지 않으며 둘 다 필요합니다.
도움을 주시면 감사하겠습니다.
답변
설명서 에서 바로 : ” -t 스위치를 여러 개 작성하여 여러 테이블을 선택할 수 있음 “
따라서 모든 테이블을 나열해야합니다.
pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql
동일한 접두사 (또는 접미사)가있는 여러 테이블이있는 경우 와일드 카드를 사용하여 -t
매개 변수 와 함께 선택할 수도 있습니다 .
” 또한 테이블 매개 변수는 psql의 \ d 명령에서 사용하는 것과 동일한 규칙에 따라 패턴으로 해석됩니다. “
답변
특정 테이블이 특정 정규식과 일치하는 경우 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>