A essência do que você perdeu é que, a menos que seu comando pg_dump inclua a opção -c
( clean
- Elimine objetos antes de criá-los), você precisa descartar todas as tabelas antes de restaurar. pg_dump
produz SQL para recriar tabelas e carregar os dados de volta para eles, mas se a tabela já existir, o comando CREATE TABLE
falhará (é por isso que seu esquema não voltou ao que você esperava) e se já houver dados nas tabelas você vai acabar com linhas duplicadas, ou muitos erros sobre chaves duplicadas (dependendo se as chaves estão definidas ou não).
Você deve reservar um tempo para ler, ler e entender a documentação do Postgres sobre backup / restauração e a página do manual pg_dump . Na verdade, sugiro ler a documentação do Postgres para quaisquer áreas em que você não se sinta 100% confiante e / ou perguntando nas listas de discussão. A documentação do Postgres é de notável qualidade, e eu a mantenho ao lado do Manual do FreeBSD como um exemplo do tipo de documentação todos projetos de código aberto devem se esforçar para produzir ...