Estou usando o Postgres 9.5 no Mac Sierra. Desejo exportar alguns registros do meu banco de dados local e importá-los para um banco de dados em uma máquina Linux (também executando o PostGres 9.5). Estou usando este comando para exportar dados da minha máquina local…
localhost:myproject davea$ pg_dump -U myproject mydb -a -t table1 -t table2 -t table3 > /tmp/pgdata.sql
Os dados são exportados em uma série de comandos de cópia. Existe uma maneira de exportar os dados da tabela para que o arquivo tenha um monte de “INSERT ... ON CONFLICT DO NOTHING;” declarações? Existem algumas duplicatas no banco de dados de origem e no banco de dados de destino, mas não quero que isso atrapalhe a importação dos dados não duplicados.
pg_dump
não permitirá que você faça exatamente o que pediu, mas você tem uma opção que pode ser boa o suficiente. De acordo com a documentação do pg_dump , você tem a--inserts
opção:Por exemplo, vamos supor que você use
myhost
emydb
.Criamos e preenchemos uma tabela (em um esquema):
Neste ponto, nós o apoiamos:
Após o backup, excluímos uma das linhas da tabela, mas ainda deixamos uma:
Neste ponto, restauramos o backup (isso é o que você faria normalmente em seu segundo banco de dados) e recebemos as seguintes mensagens:
O processo de restauração gerou um erro (a linha que já estava na tabela), mas inseriu o restante dos dados.
Embora não seja exatamente o que você estava pedindo, para todos os efeitos práticos você consegue o resultado que está procurando.