2025年9月25日: PostgreSQL 18 发布!

pg_dumpbinary v2.7

发布于 2022-03-15,作者 Gilles Darold
相关开源项目

瑞士苏黎世 - 2022 年 3 月 14 日

pg_dumpbinary

pg_dumpbinary 是一个用于以二进制格式转储 PostgreSQL 数据库的程序。转储后的数据必须使用此工具提供的 pg_restorebinary 进行恢复。

pg_dumpbinary 2.7 于今日发布,此次新版本为 pg_restorebinary 增加了两个新选项

  • -E, --exclude-ext EXTNAME 不恢复的扩展名,可多次使用。
  • --schema-exists 向 CREATE SCHEMA 添加 IF NOT EXISTS 子句

这些选项在修复扩展依赖关系时可能很有用,例如当创建顺序发生变化时。它们可以手动创建并从恢复中排除,扩展的配置表数据仍会被恢复,这只是移除了扩展创建语句。如果在恢复之前已存在某个 schema,--schema-exists 将通过追加 IF NOT EXISTS 子句来防止命令在 schema 创建时失败。

pg_dumpbinary 2.6 于上周发布,为 pg_dumpbinary 添加了一个新的命令行选项 --load-via-partition-root,用于仅通过分区表(而不是像默认行为那样按分区)进行转储/恢复。它使 COPY 语句指向分区层级的根而不是分区,这在将数据重新加载到行不一定与原始服务器上相同分区的服务器时可能很有用。这相当于 pg_dump 的选项。

pg_dumpbinary 在某些情况下很有用

  • 您有 pg_dump 无法导出的 bytea,因为转义/十六进制输出的总大小超过 1Gb。
  • 您有一个自定义类型,它在 bytea 中内部存储 \0,但数据以 char/varchar/text 的形式返回,这会在 \0 之后截断数据。在这种情况下,pg_dump 将以输出类型导出数据,导致数据丢失。
  • 任何其他二进制格式可能很有用的情况。

如果您遇到上述情况,pg_dumpbinary 将通过以二进制格式转储 PostgreSQL 数据库来帮助您。在所有其他情况下,您必须使用 PostgreSQL 自带的 pg_dump/pg_restore 命令。

请参阅文档以获取功能的完整描述。

链接与致谢

pg_dumpbinary 是由 LzLabs GmbH 的一个开源项目。欢迎为构建更好的工具做出贡献。您只需通过 GitHub 工具发送您的想法、功能请求或补丁。

链接