0

我的 postgres 转储 ( pg_dump > file.sql) 包含我要删除的数据。是否有一个简单的正则表达式(或 sed/awk 命令)来删除特定COPY table_name语句和终止词(“。”)之间的所有行。我知道正则表达式对于不匹配和多行模式并不理想,但我还是尝试了这些(在崇高的查找/替换中):

"COPY ((?!\\[.])*.*)*"

"COPY ((?!\\[.]$)*(.[\n])*)*"

"COPY (?!\\[.]$)(.*[\n]*)*"

我能得到的最接近的是匹配复制语句之后的第一行数据:

"COPY (?!\\[.]$).*[\n]+.*[\n]+"
4

1 回答 1

1

通常,您可能希望执行以下操作(请注意,在某些情况下,这会引起外键依赖项的一些问题:

pg_dump -s mydatabase > dump.sql
pg_dump -a -t table_i_want1 -t table_i_want2 -t table_i_want3 >> dump.sql

-s 标志意味着--schema-only和 -a 标志告诉它“追加”(即仅数据)。

于 2013-11-03T02:20:57.980 回答