Mesclando o despejo do Postgresql com o banco de dados de produção

3

Eu tenho um banco de dados postgresql que perdeu alguns registros. Eu quero ter um dump SQL pg_dump do banco de dados de alguns dias atrás e mesclar com o banco de dados de produção atual. Muitos dos registros serão duplicados para pular as duplicatas. Qual é a melhor maneira de fazer isso?

    
por user53107 01.09.2010 / 19:41

2 respostas

1

Não sabendo com que tipo de dump você está trabalhando (simples, tar ou personalizado) ...

Se você tiver dblink disponível, poderá restaurar para um banco de dados diferente e enviar os dados para a caixa de produção.

Uma solução mais complicada pode ser

  1. restaure o despejo para um banco de dados diferente,
  2. altere os nomes de esquema / tabela para não entrar em conflito com nada no banco de dados de produção,
  3. descarregue as tabelas renomeadas e use esse dump para obter as tabelas renomeadas no banco de dados de produção.
  4. Depois de tudo isso, você pode usar o SQL simples para localizar / inserir os dados ausentes.
por 14.01.2011 / 19:35
0

patch poderia ser seu amigo poderia tentar criar um novo despejo, vamos chamá-lo de current_dump e fazer um diff contra o old_dump então use

   diff old_dump new_dump > patch.input
    (copy the new_dump) to another file at this point new.db.dump)
    patch new.db.dump patch.input

Você pode ter que ordenar o tipo dos arquivos de despejo antes de fazer o diff e, dependendo do tamanho do seu banco de dados, isso pode não ser prático.

Tenha também muito cuidado e faça isso contra um backup até ter certeza de que está certo.

Caso contrário, talvez existam ferramentas do tipo ETL que possam fazer isso.

    
por 02.09.2010 / 10:44

Tags