Postgres 데이터베이스 복원 : pg_restore -vs- psql 만 사용


16

pg_dump (일반 텍스트 형식)를 사용하여 Postgres 데이터베이스를 덤프 한 다음 psql ( -f옵션) 을 사용하여 간단히 복원하십시오 .

질문을 제기 하는 것은 : 전문적인 복원 도구처럼 보이는 pg_restore 를 사용하지 않아서 누락 된 것이 psql있습니까?

pg_dump매개 변수 를 사용하여 트리거 비활성화와 같은 옵션을 제어 할 수 있습니다 . 그러면 무엇을 pg_restore위해 사용됩니까? 일반 텍스트가 아닌 덤프 형식?


4
매뉴얼에서 : " pg_restore는 pg_dump에 의해 생성 된 아카이브에서 일반 텍스트아닌 형식 으로 PostgreSQL 데이터베이스를 복원하는 유틸리티입니다. "
a_horse_with_no_name

답변:


19

당신은 SQL 형식의 덤프를 생성 한 경우, 모든 수있는 사용이다 psql.

사용자 정의 형식 ( pg_dump -Fc) 또는 디렉토리 형식 ( pg_dump -Fd) 덤프 를 작성한 경우을 사용해야합니다 pg_restore.

사용자 정의 및 디렉토리 형식 덤프는 일반 SQL 스크립트 덤프보다 많은 이점을 제공하며 독점적으로 사용합니다. 당신은 선택적으로 지정해야하는 옵션 많은 시간 등, 복원에서만 스키마, 데이터 만, 또는 두 가지 모두에 포함할지 여부를 선택할 수 있습니다, 일부 테이블 / 스키마를 복원 할 수 있습니다 pg_dumpSQL 형식의 덤프와 시간에 선택할 수 있습니다 restore-을 사용자 정의 형식 덤프를 사용하는 경우 시간pg_restore.

그것은 이전 버전과의 호환성을 위해 아니었다면 나는 기본에 대한 확신 pg_dump-Fc(사용자 정의) 형식입니다.

PostgreSQL 데이터베이스로 복원 한 후 복원 된 DB를 덤프하지 않으면 SQL 형식 덤프를 사용자 정의 형식 또는 디렉토리 형식으로 변환 할 수 없습니다.


정규식으로 SQL 파일에서 할 수있는 것처럼 이름 바꾸기 기능을 일괄 처리하고 데이터 조작을 수행 할 수 있습니까?
velop

1
아니요 . 필요한 경우 SQL 형식 덤프 전환하기 pg_restore위한 dbname인수 없이도 가능합니다 . 당신은 반대로 할 수 없습니다.
Craig Ringer

@CraigRinger psql과 pg_dump를 사용하여 복원하는 데 속도 차이가 있습니까?
Nikunj Sardhara

2
@NikunjSardhara 보통은 아니지만 pg_restore병렬 복원을 지원하며, 사용하면 훨씬 빠릅니다.
크레이그 링거
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.