我的postgres转储(pg_dump > file.sql
)包含我要删除的数据。是否有一个简单的正则表达式(或sed / awk命令)来删除特定COPY table_name
语句和终止字(“。”)之间的所有行。我知道正则表达式对于NOT匹配和多行模式并不理想,但无论如何我都尝试了这些(在崇高的查找/替换中):
"COPY ((?!\\[.])*.*)*"
"COPY ((?!\\[.]$)*(.[\n])*)*"
"COPY (?!\\[.]$)(.*[\n]*)*"
我能得到的最接近的是匹配复制语句后的第一行数据:
"COPY (?!\\[.]$).*[\n]+.*[\n]+"
答案 0 :(得分: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标志告诉它"追加" (即仅数据)。