首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PSQL防止DB转储中的“注释”

问PSQL防止DB转储中的“注释”
EN

Stack Overflow用户
提问于 2021-09-15 12:04:02
回答 1查看 91关注 0票数 1

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

我有步骤

  • 导出现有DB pg_dump --no-owner --clean --blobs --no-privileges -U dbuser old_dbname -f bkpfile.sql
  • 将转储导入到不同的DB psql -U dbuser2 new_dbname -f bkpfile.sql

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

新的DB用户必须对旧数据库没有权限,imho --无论如何在转储中引用旧数据库名是不好的。

有没有一种方法可以在没有COMMENT ON DATABASE语句的情况下创建一个完整的DB转储?

编辑:

PostgreSQL 9.6复制步骤:

代码语言:javascript
复制
CREATE DATABASE testdb;
COMMENT ON DATABASE testdb IS 'some comment';
CREATE TABLE xx (id int);

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

代码语言:javascript
复制
pg_dump --no-owner --clean --blobs --no-privileges testdb

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-15 18:56:36

此注释仅在低于PostgreSQL的v11版本中转储。在发布说明中看到这个条目

pg_dump和pg_restore在没有--create的情况下不再转储/恢复数据库级的注释和安全标签;它们现在被视为数据库的属性。

无论如何9.6很快就会失去支持,所以这是一个升级的好机会。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69192773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档