PSQL 阻止 "COMMENT ON" 数据库转储

PSQL prevent "COMMENT ON" on the DB dump

我们正在迁移一些产品,其中一个步骤是迁移产品数据库。

我有步骤

问题是旧数据库包含语句 COMMENT ON DATABASE old_dbname IS 'Rxxxxx';

新数据库用户不得对旧数据库拥有权限,恕我直言,无论如何在转储中引用旧数据库名称都不好。

有没有办法在没有 COMMENT ON DATABASE 语句的情况下创建完整的数据库转储?

编辑:

PostgreSQL 9.6 重现步骤:

CREATE DATABASE testdb;
COMMENT ON DATABASE testdb IS 'some comment';
CREATE TABLE xx (id int);

然后转储数据库,转储包含对数据库名称的引用 COMMENT ON DATABASE testdb IS 'some comment';,这会阻止将备份导入新数据库

pg_dump --no-owner --clean --blobs --no-privileges testdb

我们可以手动删除评论语句或使用不同的工具 (grep) 过滤评论,但在备份之上进行手动干预或基于文本的过滤可能会导致数据损坏。

此评论仅在 v11.1 以下的 PostgreSQL 版本中转储。请参阅 release notes 中的此条目:

pg_dump and pg_restore, without --create, no longer dump/restore database-level comments and security labels; those are now treated as properties of the database.

反正9.6很快就会停止支持,所以这是一个升级的好机会。