查看PostgreSQL备份文件的简单方法是什么?

66
我有大量的postgresql转储文件需要浏览数据。我是否必须安装Postgresql并逐个将它们“恢复”到新数据库中?还是希望有一个postgresql客户端可以简单地打开它们,我可以查看数据,甚至运行简单的SQL查询?
这些转储文件都来自Postgresql v9.1.9服务器。
或者也许有一个工具可以轻松地与转储文件建立数据库“连接”?
更新:这些不是文本文件。他们是二进制文件。它们来自Heroku的备份机制,这是Heroku关于如何创建其备份的说法
PG Backups使用本地pg_dump PostgreSQL工具创建其备份文件,因此导出到其他PostgreSQL安装程序非常容易。

1
备份是如何制作的?即...您是否有用于创建它们的确切命令? - swasheck
备份机制从Heroku进行了转储。 - at.
7个回答

77

这就是我一直在寻找的东西:

pg_restore db.bin > db.sql

感谢 @andrewtweber


3
转换结果如下:如果转储文件很大,建议您尝试使用pg_restore db.bin | less来查看,或者执行pg_restore db.bin | psql dbname > log 2> error来还原它。请注意,前者仅用于查看而不是还原。 - Rodrigo Hjort
1
现在怎么办?pg_restore:[archiver]文件头中的不支持版本(1.13) - Chloe
1
@Chloe 这意味着你的 pg_restore 版本太低,无法恢复你正在尝试恢复的备份。 - Jeff
16
在使用Postgres 13版本时,我需要执行pg_restore db.bin -f db.sql命令进行恢复操作。请参考@AlexDev的答案(链接:https://dev59.com/JWQo5IYBdhLWcg3wOtMC#59378860)。 - hangler

40

尝试使用文本编辑器打开文件 - 默认转储格式为纯文本。

如果转储不是纯文本 - 尝试使用pg_restore -l your_db_dump.file命令。它将列出数据库转储中的所有对象(如表、索引...)。

另一种可能的方法(可能不起作用,我没有尝试过)是通过pg_restore your_db_dump.file命令的输出进行grep搜索。 如果我正确理解手册 - pg_restore的输出只是一系列SQL查询,将重建数据库。


1
pg_restoreжҳҜеңЁе®үиЈ…PostgresqlжңҚеҠЎеҷЁж—¶иҮӘеёҰзҡ„е‘Ҫд»Өеҗ—пјҹиҝҳжҳҜжҲ‘еҸҜд»Ҙд»Һе…¶д»–ең°ж–№иҪ»жқҫиҺ·еҸ–иҜҘе‘Ҫд»Өпјҹ - at.
1
pg_restore -l 只会给你表格和其他元数据,而不是实际数据。不过,你上次的建议对我非常有效。 - at.

26

在新版本中,您需要使用文件名或'-'指定-f标志以将输出发送到标准输出

pg_restore -f - dump_file.bin

谢谢!我对上述解决方案感到困惑。 - lmat - Reinstate Monica
4
换句话说,要生成一个包含原始SQL的文件,可以使用命令"pg_restore dump_file.bin -f dump_file.sql"。谢谢。 - equivalent8
2
语法不正确,应该是:pg_restore -f extracted.sql dump_file.bin 选项必须在指定转储文件之前放置。 - Mihailo
@Mihailo,我们需要你的评论更高一些。我希望管理员能够编辑这个答案。 - deps_stats
@Mihailo 我根据评论更新了答案,虽然我没有测试它。 - AlexDev
@Mihailo 在我的 pg_restore 版本中,选项也可以在后面。 - Michael Mior

15

我曾遇到过同样的问题,最终我这样做:

  1. 安装PostgreSQL和PGAdmin3。
  2. 打开PGAdmin3并创建一个数据库。
  3. 右键单击数据库,然后点击“还原”。
  4. 忽略文件类型。
  5. 从Heroku选择数据库转储文件。
  6. 点击“还原”。

2
pg_restore -f - db.bin > db.sql

1
“-f - ... > foo” 更简单的写法是 “-f foo ...”。请参考AlexDev的回答。 - Camille Goudeseune

0
转储文件通常是文本文件,如果未经压缩,您可以使用文本编辑器打开它们。在里面,您会找到所有的查询,这些查询允许重建数据库...

12
这些转储文件不是文本文件,它们是二进制文件。 - at.

0
如果您在Windows上使用pgAdmin,可以将文件备份为纯文本,当您进行备份时,有一个选项可以代替命令行提示符中的pg_dump。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接