我们正在迁移一些产品,其中一个步骤就是迁移产品数据库。
我有步骤
pg_dump --no-owner --clean --blobs --no-privileges -U dbuser old_dbname -f bkpfile.sqlpsql -U dbuser2 new_dbname -f bkpfile.sql问题是旧数据库包含语句COMMENT ON DATABASE old_dbname IS 'Rxxxxx';
新的DB用户必须对旧数据库没有权限,imho --无论如何在转储中引用旧数据库名是不好的。
有没有一种方法可以在没有COMMENT ON DATABASE语句的情况下创建一个完整的DB转储?
编辑:
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)过滤注释,但是在备份的基础上进行手动干预或基于文本的筛选可能会导致数据损坏。
发布于 2021-09-15 18:56:36
此注释仅在低于PostgreSQL的v11版本中转储。在发布说明中看到这个条目
pg_dump和pg_restore在没有
--create的情况下不再转储/恢复数据库级的注释和安全标签;它们现在被视为数据库的属性。
无论如何9.6很快就会失去支持,所以这是一个升级的好机会。
https://stackoverflow.com/questions/69192773
复制相似问题