用于删除Postgres SQL数据插入(COPY)语句的正则表达式。

时间:2013-07-31 21:05:33

标签: sql regex postgresql replace sublimetext

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

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

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

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

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

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

1 个答案:

答案 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标志告诉它"追加" (即仅数据)。