pg_dump是否需要-C参数来恢复数据库?

时间:2012-09-07 13:09:41

标签: postgresql

我的意图是使用以下方式转储数据库:

pg_dump -U postgres -h localhost -p 5432 MYDB | gzip > database_dump.gz

并将其恢复到另一个环境:

gunzip -c database_dump.gz | ssh 10.10.10.10 \
  psql -1 -U postgres -h localhost -p 5432 MYDB

在我在第二个环境中恢复数据库之前,我将删除现有数据库以便为新转储(包含更新的数据)腾出空间。

这是我的问题:我是否需要在pg_dump语句中指定-C参数,以便输出的转储文件包含CREATE DATABASE语句?我注意到没有参数,转储文件不包含CREATE DATABASE语句。

根据-C参数的9.1文档,“此选项仅对纯文本格式有意义。对于存档格式,您可以在调用pg_restore时指定选项。”我不肯定这意味着什么。如上所示,我正在使用psql而不是pg_restore进行恢复。

1 个答案:

答案 0 :(得分:4)

这意味着使用psql重新创建数据库,您需要添加-C

pg_restore是专门用于从非明文格式的pg_dump生成的脚本中恢复数据库的工具。您不能像psql那样以交互方式使用它。另一方面,您可以选择列出归档中的对象并选择需要还原的对象。另一个有用的选项是设置用于处理存档的并发作业数。在某些情况下,这可以加速恢复。

如果您未使用pg_dump选项指定-F的输出格式,它将为您创建纯文本存档。