有没有办法执行pg_dump并为表/视图和列排除COMMENT ON?
我广泛使用COMMENT ON命令来描述所有对象,并且通常在其中包含换行符以获得更清晰的描述,例如:
COMMENT ON TABLE mytable1 IS 'MAIN TABLE...
NOTES:
1. ...
2. ...
3. ...
';
但是,由于转储中也有换行符,我不能简单地使用grep -v'COMMENT ON'命令删除注释。
从转储中快速删除这些COMMENT ON的其他任何方法吗?
答案 0 :(得分:2)
我实际上是通过两阶段转储和恢复来实现的。
按原样转储和恢复数据库,或者使用createdb -T
或CREATE DATABASE WITH TEMPLATE
运行以下命令
Delete from pg_description;
答案 1 :(得分:2)
AFAIK,pg_dump
和pg_restore
都没有删除COMMENT
的选项。但是,如果您使用二进制转储格式,如:
$ pg_dump -Fc <your connection> -f /path/to/backup.dump
您可以提取TOC条目并对其进行编辑:
$ pg_restore -l -f /path/to/backup.toc /path/to/backup.dump
以上将提取TOC文件并将其保存在/path/to/backup.toc
,然后您可以找到带有COMMENT
条目的每一行并删除或评论它。如果你不在对象上使用奇怪的名字,一个简单的sed
就可以解决问题,用COMMENT
来评论你可以这样做的行(分号开始注释):
$ 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
答案 2 :(得分:1)
使用--no-comments
选项。
示例:
$ pg_dump --no-comments [database] > dump.sql