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

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

最佳答案

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

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

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

关于postgresql - pg_dump 是否需要 -C 参数来恢复数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12318792/

相关文章:

postgresql - 在 Linux 中备份 PostgreSQL 数据库

postgresql - PL/pgSQL : Can we store a query result into a variable

ruby-on-rails - 不使用 CLI 将 schema.rb 部署到 Heroku

postgresql - ltree 扩展已安装,但创建表仍然会抛出错误

ruby - 我应该将美国各州存储为数组还是创建表列?

postgresql - 我成功创建的表丢失

java - 错误 : null value in column "name_file" violates not-null constraint

java - 如何使用 J2ME 读取数据库?

PostgreSQL:如何用多种货币存钱?

java - 如何在事务打开后立即查询 SQL?