Estou descartando meu banco de dados do Postgres usando pg_dump (no formato de texto sem formatação) e restaurando-o simplesmente usando o psql (com o-f
opção).
O que suscita a pergunta: estou perdendo alguma coisa por não usar pg_restore, que parece uma ferramenta de restauração especializada (em comparação com a genérica psql
)?
Eu posso controlar opções como desabilitar gatilhos e coisas assim usando pg_dump
parâmetros. Para que, então, é pg_restore
usado? formatos de despejo sem texto simples?
postgresql
postgresql-9.1
Marcus Junius Brutus
fonte
fonte
Respostas:
Se você criou um dump no formato SQL, tudo o que você pode usar é
psql
.Se você criou um dump de formato personalizado (
pg_dump -Fc
) ou de diretório (pg_dump -Fd
), você pode e deve usarpg_restore
.Os dumps personalizados e de formato de diretório oferecem muitas vantagens sobre os dumps simples de script SQL, e eu os uso exclusivamente. Você pode restaurar seletivamente apenas algumas tabelas / esquemas, pode optar por incluir apenas o esquema, apenas os dados ou ambos no momento da restauração, etc. Muitas das opções que você precisa especificar no
pg_dump
momento com dumps no formato SQL podem ser escolhidas em restore- hora se você usar um dump de formato personalizado epg_restore
.Se não fosse para compatibilidade Tenho certeza que o padrão para
pg_dump
seria-Fc
formato (personalizado).Você não pode converter um despejo no formato SQL em formato personalizado ou em diretório sem restaurá-lo em um banco de dados PostgreSQL e depois despejar o banco de dados restaurado.
fonte
pg_restore
sem umdbname
argumento, transformá-lo em um dump no formato SQL, se precisar. Você não pode fazer o contrário.pg_restore
suporta restauração paralela, e se você usar isso, será MUITO mais rápido.