恢复 Postgres 数据库:pg_restore -vs- 只使用 psql

Mar*_*tus 29 postgresql postgresql-9.1

我正在使用pg_dump(纯文本格式)转储我的 Postgres 数据库,然后简单地使用psql(带有-f选项)来恢复它。

这就引出了一个问题:我不使用pg_restore这似乎是一个专门的恢复工具(与通用相比),我是否遗漏了什么psql

我可以通过使用pg_dump参数来控制诸如禁用触发器等选项。那么,是pg_restore用来做什么的呢?非纯文本转储格式?

Cra*_*ger 31

如果您创建了 SQL 格式的转储,则您只能使用psql.

如果您创建了自定义格式 ( pg_dump -Fc) 或目录格式 ( pg_dump -Fd) 转储,则可以并且必须使用pg_restore.

与普通 SQL 脚本转储相比,自定义和目录格式转储具有很多优势,我专门使用它们。您可以选择只恢复一些表/架构,可以选择是否只包括架构,只有数据还是在恢复的时候,等你要指定的选项在很多pg_dump的时间与SQL格式的转储可以选择restore-时间如果使用自定义格式转储和pg_restore

如果不是为了向后兼容,我确定默认格式pg_dump-Fc(自定义)格式。

您无法将 SQL 格式的转储转换为自定义格式或目录格式,除非将其恢复到 PostgreSQL 数据库,然后转储恢复的数据库。

  • @NikunjSardhara 通常不是,但`pg_restore` 支持并行还原,如果你使用它会快很多。 (2认同)