Restore em Postgres evitando determinadas tabelas
É comum em ambientes de desenvolvimento ou homologação precisarmos de massa de dados para testar um relatorio ou uma consulta mais complexa. A preocupação com a performance é evidente nestes cenários.
Neste artigo, falaremos sobre a possibilidade de realizar restore de banco em Postgres, descartando determinadas tabelas, afim de evitar a carga de dados desnecessária para o ambiente.
Detalhe
O exemplo a seguir é realizado em ambiente Linux e faz uso de backup realizado através do pg_dump
com formato padrão.
Passos
Na pasta onde esta o arquivo de backup, faremos o uso do pg_restore
com a opção -l
para listar as estruturas do backup juntamente com o grep
para retirar desta lista o comando de restore dos dados da tabela desejada (a estrutura permanece).
Não se preocupe, neste momento não estaremos restaurando nada. Apenas gerando um arquivo com as estruturadas que queremos no final do restore:
$ pg_restore -l DB_SIGA_PROD.dump | grep -v 'TABLE DATA public.tb_doc_anexo' > restore.list
Com a execução do comando, temos a lista gerada no arquivo restore.list
sem a orientação para restore dos dados da tabela public.tb_doc_anexo
.
Caso precise informar uma segunda ou terceira tabela, repita o grep
novamente com o nome das tabelas. Exemplo:
$ pg_restore -l DB_SIGA_PROD.dump | grep -v 'TABLE DATA public.tabela_a' | grep -v 'TABLE DATA public.tabela_b' > restore.list
Agora, basta realizar o restore fazendo o uso da opção -L
informando a lista de estruturas desejada:
$ pg_restore -U postgres -O -L restore.list -v -d DB_SIGA_HOM DB_SIGA_PROD.dump
Aguarde o restore e tchau, brigado.
Baralho! é só isso mesmo!?
Sim... testado e aprovado no ambiente do cliente PMCG.
Referências
Inscreva-se no { .aztech }
Receba as últimas postagens enviadas diretamente para sua caixa de entrada