Estou despejando meu banco de dados Postgres usando pg_dump (em formato de texto simples) e, em seguida, restaurando-o simplesmente usando psql (com a -f
opção).
O que levanta a questão: estou perdendo alguma coisa por não usar o pg_restore , que parece uma ferramenta de restauração especializada (em comparação com o genérico psql
)?
Posso controlar opções como desabilitar gatilhos e outros usando pg_dump
parâmetros. Para que serve, então pg_restore
? formatos de despejo de texto não simples ?
Se você criou um despejo no formato SQL, tudo o que você pode usar é
psql
.Se você criou um dump de formato personalizado (
pg_dump -Fc
) ou formato de diretório (pg_dump -Fd
), você pode e deve usarpg_restore
.Os despejos de formato de diretório e personalizado oferecem muitas vantagens sobre os despejos de script SQL simples, e eu os uso exclusivamente. Você pode restaurar seletivamente apenas algumas tabelas/esquema, pode escolher se deseja incluir apenas esquema, apenas dados ou ambos no momento da restauração
pg_dump
, etc. tempo se você usar um dump de formato personalizado e arquivospg_restore
.Se não fosse pela compatibilidade com versões anteriores, tenho certeza de que o padrão
pg_dump
seria o-Fc
formato (personalizado).Você não pode converter um despejo de formato SQL em formato personalizado ou formato de diretório sem restaurá-lo para um banco de dados PostgreSQL e, em seguida, despejar o banco de dados restaurado.