【问题标题】:Convert PostgreSQL SQL dump to PostgreSQL custom-format dump将 PostgreSQL SQL 转储转换为 PostgreSQL 自定义格式转储
【发布时间】:2018-09-03 13:53:22
【问题描述】:

我的用例如下:

  • 我有使用 pg_dump -F p(纯文本 SQL 脚本文件)制作的 PostgreSQL 转储,我无法控制它们的制作方式
  • 我喜欢pg_restore 灵活性(--no-owner、--data-only、--clean 等)

我知道我应该将psql 与纯文本 SQL 转储一起使用,但 有没有办法将 SQL 转储转换为 PostgreSQL 自定义格式转储 所以我可以使用 pg_restore,或者某种方式来获取它的所有选项?

感谢您的关注。

【问题讨论】:

  • 不,您不能转换它。以自定义格式创建转储的唯一方法是使用 pg_dump -F c
  • 我和没有名字的马先生站在一起,你真的不能那样做,除了很明显的转储。

标签: postgresql pg-dump


【解决方案1】:

正如提到的其他答案/cmets,您不能直接转换它。您应该做的是从 sql 备份文件创建一个临时数据库,并使用 pg_dump 从中创建自定义格式。

检查 sql 备份是否不是“干净”的还原文件,这意味着它不会将数据库放在文件顶部。如果是,请删除“DROP DATABASE dbase”..

创建一个临时数据库:

psql
CREATE DATABASE mytempdb;
\q

然后将备份恢复到它:

psql mytempdb < my_database_backup.sql

注意:这就是为什么您不希望在 sql 文件顶部出现“drop database...”行。它会改为删除您的原始数据库。

将其转储为自定义格式:

pg_dump mytempdb -Fc -f custom_format.dump

【讨论】:

  • 完成后最好删除这个临时数据库:psql --command="DROP DATABASE mytempdb;"
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多