查看postgresql转储文件的简便方法?

at.*_*at. 38 database pg-dump postgresql-9.1

我有大量的postgresql转储文件,我需要仔细阅读数据.我是否必须逐个安装Postgresql并将其中的每一个"恢复"到新的数据库中?或者我希望有一个postgresql客户端可以简单地打开它们,我可以查看数据,甚至可以运行一个简单的SQL查询?

转储文件全部来自Postgresql v9.1.9服务器.

或者也许有一个工具可以轻松地使数据库与转储文件"连接"?

更新:这些不是文本文件.它们是二进制的.它们来自Heroku的备份机制,这就是 Heroku关于如何创建备份的说法:

PG备份使用本机pg_dump PostgreSQL工具来创建其备份文件,这使得导出到其他PostgreSQL安装变得微不足道.

jcu*_*nod 55

这就是我想要的:

pg_restore db.bin > db.sql
Run Code Online (Sandbox Code Playgroud)

谢谢@andrewtweber

  • 对于 Postgres 13,我必须执行 `pg_restore db.bin -f db.sql`,另请参阅@AlexDev 的 [answer](/sf/answers/4156520231/) (17认同)
  • 转储文件可能很大。如果是这样的话,我建议你试试`pg_restore db.bin | less`,如果你只想看看或执行`pg_restore db.bin | psql dbname > log 2> error` 如果你想恢复它。 (3认同)

Igo*_*nko 28

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

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

另一种可能的方式(可能无法工作,没有尝试过)是grep通过输出pg_restore your_db_dump.file命令.如果我理解正确的手册 - 输出pg_restore只是一系列SQL查询,那将重建db.

  • 这对我有用:`pg_restore db.bin> db.sql`.谢谢! (9认同)
  • `pg_restore -l` 只提供表和其他元数据,而不是实际数据。不过,你的最后一个建议对我来说非常有效。 (2认同)

Aar*_*ray 10

我有同样的问题,我最终做到了这一点:

  1. 安装Postgresql和PGAdmin3.
  2. 打开PGAdmin3并创建一个数据库.
  3. 右键单击数据库并单击"还原".
  4. 忽略文件类型.
  5. 从Heroku中选择数据库转储文件.
  6. 单击"还原"


Ale*_*Dev 10

在较新的版本中,您需要-f使用文件名或“-”为标准输出指定标志

pg_restore dump_file.bin -f -
Run Code Online (Sandbox Code Playgroud)

  • 换句话说,为了使用原始 sql 生成文件`pg_restore dump_file.bin -f dump_file.sql` 谢谢你 (4认同)
  • 语法不正确,应该是: `pg_restore -f Extracted.sql dump_file.bin` 选项必须在指定转储文件之前 (3认同)