【问题标题】:Does pg_dump need -C parameter for restoring a database?pg_dump 是否需要 -C 参数来恢复数据库?
【发布时间】:2012-09-01 09:04:07
【问题描述】:

我的意图是转储数据库使用:

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 进行恢复。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    表示使用psql重新创建数据库,需要添加-C

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

    如果您不使用-F 选项指定pg_dump 的输出格式,它将为您创建一个明文存档。

    【讨论】:

    • 太好了,感谢您的解释。我会将 -C 添加到我的 pg_dump 中。
    猜你喜欢
    • 1970-01-01
    • 2019-12-07
    • 1970-01-01
    • 2018-07-22
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多