SQL: converta o arquivo de backup do formato de copiar para inserir formato
-
26-09-2019 - |
Pergunta
Eu tenho um backup do PostGresql feito com o phppgadmin usando exportação> cópia (em vez disso, cópia> sql, que é realmente o que eu preciso).
O arquivo contém entradas como esta:
COPY tablename(id, field) FROM stdin;
...
Como converter este arquivo em formato SQL?
INSERT INTO tablename...
Quero usar o pgadmin para importar esse arquivo usando o comando execute sql.
Solução
Você não pode converter isso em formato SQL (pelo menos não direto).
Se você não pode exportar, então a opção mais simples é ignorar phppgadmin, faça login no seu servidor e execute algo como
cat [yourdump.sql] | psql [your connections args]
Se você não tiver acesso do shell ao seu servidor, você pode tentar fazer o upload do arquivo (via SFTP ou FTP) e carregá -lo por Thorugh Phppgadmin com "COPY <table> FROM <path_to_file_on_server>"
. Mas se houver muitas tabelas, você deve (acredito) dividir o arquivo e fazê -lo um de cada vez.
Outras dicas
Não conheço uma maneira ou uma ferramenta que possa converter "copiar" em instruções "Inserir".
Mas com a ferramenta de linha de comando "pg_dump", você pode criar um arquivo de despejo de banco de dados com instruções "Inserir" em vez de "copiar". Simples use o argumento "-coluna-inserts" (pode ser "--inserts" também é bom para você).
EDITAR:
O que você pode fazer é:
- Crie um novo banco de dados PostGres em sua máquina local
Importe seu arquivo de despejo de banco de dados para o novo banco de dados criado
psql -U <dbuser> <database> < dump.sql
E crie um dump pós -gres com "--column-inserts" a partir desse banco de dados
pg_dump --column-inserts -U <dbuser> <database> > dumpWithInserts.sql
Podes tentar Cópia do programa Sintaxe, disponível desde o PostGresql 9.3
Por exemplo:COPY tbl_customers (id, address_id, insurance_id, fullname, secret_code ...) FROM PROGRAM 'echo "1 2 \N Ivan Ivanov 42 ..."'
Eu escrevi uma ferramenta para converter o depósito de cópia para inserções de dump:
https://github.com/freddez/pg-dump2insert
Você pode usá -lo para carregar um despejo em outro banco de dados ou pesquisar valores excluídos específicos, por exemplo.