pg_dump在对象上没有注释?[英] pg_dump without comments on objects?

本文是小编为大家收集整理的关于pg_dump在对象上没有注释?的处理方法,想解了pg_dump在对象上没有注释?的问题怎么解决?pg_dump在对象上没有注释?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

有没有办法执行 pg_dump 并排除表/视图和列的 COMMENT ON ?

我广泛使用 COMMENT ON 命令来描述所有对象,并且经常在其中包含换行符以进行更清晰的描述,例如:

COMMENT ON TABLE mytable1 IS 'MAIN TABLE...
NOTES:
1. ...
2. ...
3. ...
';

但是,由于转储中也有换行符,我不能简单地使用 grep -v 'COMMENT ON' 命令删除注释.

还有其他方法可以快速从转储中删除这些 COMMENT ON 吗?

推荐答案

AFAIK,pg_dump 和 pg_restore 都没有删除 COMMENT 的选项.但是,如果您使用二进制转储格式,例如:

 $ pg_dump -Fc <your connection> -f /path/to/backup.dump

您可以提取目录条目并对其进行编辑:

 $ pg_restore -l -f /path/to/backup.toc /path/to/backup.dump

上面将提取一个TOC文件并将其保存在/path/to/backup.toc中,然后您可以找到具有COMMENT条目的每一行并删除或注释它.如果你不在你的对象上使用奇怪的名字,一个简单的 sed 就可以解决问题,用 COMMENTs 注释行你可以这样做(分号开始注释):

$ sed -i 's/^\(.* COMMENT .*\)/;\1/g' bar.toc

有了这个新的 TOC 文件,您现在可以使用 pg_restore 来恢复您的转储(使用 -L 选项):

$ pg_restore -L /path/to/backup.toc -d <your database> /path/to/backup.dump

本文地址:https://www.itbaoku.cn/post/1763878.html