Eu usei o pg_dump em uma máquina e copiei o arquivo de resultado para outro, onde tentei restaurá-lo. Eu acredito que esquema é o mesmo. No entanto, eu recebo:
pg_restore: [archiver] input file does not appear to be a valid archive
Eu fiz as seguintes operações:
pg_dump -a -f db.txt dbname
e:
pg_restore -a -d dbname db.txt
O que pode estar errado?
postgresql
gruszczy
fonte
fonte
Respostas:
Você está despejando no formato sql simples, projetado para alimentar o psql. Isso não é reconhecido pelo pg_restore.
deve fazer o truque
fonte
psql dbname < db.txt
;) #pg_dump
por padrão, cria os comandos sql necessários para recriar os dados. Para recuperá-lo, basta invocarpsql
(nãopg_restore
) o arquivo como entrada.pg_restore
deve ser usado apenas para o formato binário (não padrão e menos usual,não recomendado) depg_dump
. Leia os documentos .Atualização: Os
pg_dump
formatos binários (-Fc
-Ft
) a serem usadospg_restore
estão ok e oferecem alguma flexibilidade extra. Mas eles são menos padrão (não SQL), menos aptos para importar de algumas ferramentas (por exemplo, um front-end php) ou manipular com um editor de texto e um pouco menos portável para outras versões e até outros bancos de dados. Para backups, eu continuaria com o formato simples padrão. Para outros cenários, a opção binary + pg_restore pode ser igualmente ou mais adequada.O ponto a ser mantido é que, no Postgresql, no cenário típico , o backup normalmente é feito por pg_dump (simples) e a restauração com o cliente de linha de comando padrão ( psql ).
fonte
Tente passar a
--format=c
opção parapg_dump
. Isso permitirápg_restore
restaurá-lo.fonte
pg_restore: [archiver] did not find magic string in file header
que isso não funciona para simples despejo sqlpg_dump --format=c ...> archivefile
, e então usarpg_restore
emarchivefile
, em seguida, (pelo menos quando eu testei apenas agora) ele funciona muito bem. Talvez o seu arquivo esteja corrompido de alguma forma? Ou você atingiu um bug específico?Isto é o que eu faria para fazer backup do meu banco de dados antigo e restaurar
Para fazer backup do seu banco de dados
Para restaurar esse backup
Leia mais sobre pg_dump e pg_restore
fonte
Para usuários do Windows, tente
Funciona como um encanto
fonte
Você pode fazer algo com o
SOURCE
comando do MySQL :Em seguida, no terminal postgresql:
fonte
dumpFileName do gato | psql -h ip -d dbName -U nome_do_usuário -W
fonte
Essa mensagem de erro também pode significar que há realmente algo errado com o arquivo de backup (ou suas suposições).
Em um caso, montei um arquivo de backup em um contêiner do Docker e tentei restaurar, mas ele falhou
does not appear to be a valid archive
. E, de fato, o arquivo estava vazio, porque a montagem não foi realizada corretamente.fonte