pg_restore: [archiver] input file does not appear to be a valid archive
我已经完成了以下操作:
pg_dump -a -f db.txt dbname
并且:
pg_restore -a -d dbname db.txt
怎么了?
#1 楼
您正在以纯SQL格式转储,该格式旨在提供给psql。 pg_restore无法识别此问题。cat db.txt | psql dbname
应该解决这个问题
评论
或psql dbname
– Aleksey Deryagin
17年7月7日在16:59
它还需要Windows机器中的用户名:“ cat dump_file | psql db_user”
–种族主义
20-04-26在19:44
#2 楼
默认情况下,pg_dump
创建重新创建数据所需的sql命令。要恢复它,您只需要使用输入文件调用psql
(而不是pg_restore
)。 pg_restore
仅用于pg_dump
的二进制(非默认值,建议不要使用不常用的格式)。阅读文档。更新:与
pg_dump
一起使用的-Fc
二进制格式(-Ft
pg_restore
)是可以的,并且提供了一些额外的灵活性。但是它们的标准性较差(非SQL),较不易于从某些工具(例如php前端)导入或使用文本编辑器进行操作,而对其他版本甚至其他数据库的可移植性则差一些。对于备份,我会坚持使用默认的纯格式。对于其他情况,binary + pg_restore选项可以同等或更合适。 保留的要点是在Postgresql中,在典型情况下,备份通常由pg_dump(普通)完成,并通过标准命令行客户端(psql)进行恢复。
评论
[OT]我希望对定制输出格式的“不推荐”状态有所不同-句子“这是最灵活的格式,因为它允许对加载数据以及对象定义进行重新排序...”对我来说是相当认可。
–迈伦·拉迪夫(Milen A. Radev)
2010年6月14日在17:09
我同意,“不推荐”是一种夸大的说法。但是“最灵活”并不一定意味着“最推荐”。澄清。
–leonbloy
2010-6-14 17:25
#3 楼
尝试将--format=c
选项传递给pg_dump
。这将允许pg_restore
恢复它。评论
谁愿意对此进行修改,想解释为什么?接受的答案说明这将起作用:-)
–psmears
2010-09-25 9:28
@skrafi:你的意思是?
–psmears
16年4月20日在8:57
抱歉,复制粘贴的输出错误,正确的输出是pg_restore:[archiver]在文件头中找不到魔术字符串,因此对于简单的sql dump不起作用
– skrafi
16-4-20在9:05
@skrafi:我不确定你的意思。如果您使用pg_dump --format = c ...>存档文件,然后对存档文件使用pg_restore,那么(至少在我刚刚进行测试时)它可以正常工作。也许您的文件以某种方式损坏了?还是您遇到了特定的错误?
–psmears
16年4月20日在9:35
#4 楼
这就是我要备份旧数据库并还原备份数据库
pg_dump --format=c olddb_name > db_dump_file.dump
还原该备份的方法
pg_restore -v -d newdb_name db_dump_file.dump
详细了解pg_dump和pg_restore
#5 楼
对于Windows用户,请尝试type db.txt | psql --username="YOURNAME" dbname
像魅力一样工作
评论
这救了我,谢谢!至少应接受Windows的答案。
–丹尼尔·巴特勒(Daniel Butler)
19年8月8日在19:30
#6 楼
您可以对MySQL的SOURCE
命令执行以下操作:psql dbname
然后在postgresql终端中:
\i filename
#7 楼
猫dumpFileName | psql -h ip -d dbName -U用户名-W评论
如果您说明这样做的目的以及为什么会有所帮助,通常会很有帮助。
–猎鹰Momot
2014年4月11日在18:23
#8 楼
此错误消息也可能意味着备份文件实际上有问题(或您对此的假设)。在一种情况下,我已将备份文件安装在Docker容器中并尝试还原,但失败,原因是
does not appear to be a valid archive
。实际上,该文件为空,因为安装不正确。
评论
尝试在生成转储的同一台计算机上导入转储。另外,请检查Postgres版本。我不能尝试将其导入同一台计算机,因为它是生产计算机。知道了,我还能做什么?
此解决方案也可能与某些人有关:stackoverflow.com/questions/42433414/…