如何编辑巨大的SQL转储?

时间:2014-07-10 07:22:47

标签: php sql regex edit mysqldump

我有一个很大的SQL-Dump,有很多语句,比如

CREATE TABLE ...
INSERT INTO ...

等等。

我想编辑此文件。首先,我想删除所有属性的“CREATE TABLE”语句。我只想要“INSERT INTO”语句。有一个简单的方法吗?我是这个地区的新秀。

所有“INSERT INTO”语句如下所示:

INSERT INTO 'xyz' VALUES (a, b, c, d), (e, f, g, h), (c,d,e,g) ... 

我想在最后这样做:

INSERT INTO 'xyz' VALUES (<tenant_id>, a, b, c, d), (<tenant_id>, e, f, g, h), ...

有没有一种简单的方法可以实现这一点?例如。使用PHP还是Regex?我怎么能这样做? 谢谢!

2 个答案:

答案 0 :(得分:0)

如果您有权访问任何类似unix的系统,我建议您这样做:

sed '/CREATE TABLE */d' current.dump > new.dump

它将删除所有创建表行并将其余部分传递给新的转储文件

答案 1 :(得分:0)

参见示例10“显示与http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/

中所有给定模式不匹配的行”
Syntax:
grep -v -e "pattern" -e "pattern"

e..g。

grep -v -e "CREATE TABLE" current.dump > new.dump

假设CREATE TABLE语句在一行上。

对于Windows,您可以使用grep命令的各种端口,例如http://stefanstools.sourceforge.net/grepWin.html

http://www.wingrep.com/

http://gnuwin32.sourceforge.net/packages/grep.htm