与pg_dump 一样没有对对象的评论?, 有没有人知道一个命令可以一次快速删除COMMENT ON所有对象上的注释(创建于)?
现在,我求助于 bash 生成一个 SQL 脚本,该脚本会一个一个地取消每个表/视图/列上的注释,但速度很慢,尤其是 > 4000 列。
例子:
COMMENT ON COLUMN table1.column1 IS NULL;
COMMENT ON COLUMN table1.column2 IS NULL;
COMMENT ON COLUMN table1.column3 IS NULL;
...
Run Code Online (Sandbox Code Playgroud)
前段时间我也遇到过非常类似的问题,想出了一个很简单的解决方法:直接从系统目录表中删除。评论只是“附加”到对象上,不会以其他方式干扰。pg_description
DELETE FROM pg_description WHERE description = 'something special';
Run Code Online (Sandbox Code Playgroud)
免责声明:
直接操作目录表是危险的,也是不得已的措施。您必须知道自己在做什么,并且风险自负!如果你搞砸了,你可能会搞砸你的数据库(集群)。
我询问了 pgsql-admin 列表上的想法,并从 Tom Lane得到了令人鼓舞的回答:
DELETE FROM pg_description WHERE description = 'something special';
Run Code Online (Sandbox Code Playgroud)
您应该确保没有任何您希望保留的评论。首先检查您要删除的内容。请注意,许多内置的 Postgres 对象也有注释。
例如,要仅删除表列上的所有评论,您可以使用:
SELECT *
-- DELETE
FROM pg_description
WHERE objsubid > 0;
Run Code Online (Sandbox Code Playgroud)
有关表列的注释,这是列数(
objoid和classoid引用表本身)。对于所有其他对象类型,此列为零。
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |