【发布时间】:2013-08-01 14:30:16
【问题描述】:
我的 postgres 转储 (pg_dump > file.sql) 包含我要删除的数据。是否有一个简单的正则表达式(或 sed/awk 命令)来删除特定 COPY table_name 语句和终止词(“。”)之间的所有行。我知道正则表达式对于不匹配和多行模式并不理想,但我还是尝试了这些(在崇高的查找/替换中):
"COPY ((?!\\[.])*.*)*"
"COPY ((?!\\[.]$)*(.[\n])*)*"
"COPY (?!\\[.]$)(.*[\n]*)*"
我能得到的最接近的是匹配复制语句后的第一行数据:
"COPY (?!\\[.]$).*[\n]+.*[\n]+"
【问题讨论】:
-
为什么不使用
pg_dump参数从转储中排除表数据? -
不知道可以在不排除表架构的情况下排除表数据。我想我应该 RTD 多一点,看看
--schema-only和“--data-only”和表排除的某种组合是否可以解决问题。
标签: sql regex postgresql replace sublimetext