将MySQL'update'语句转换为'insert'语句

时间:2011-03-01 15:40:06

标签: mysql insert

我有一个包含UPDATE语句的11MB转储,格式如下:

UPDATE `table` SET `id` = 1,`field`='etc' WHERE `table`.`id` = 1;

但是,我需要使用如下语句将这些值插入到新数据库中:

INSERT INTO `table` (`id`, `field`) VALUES ('etc', 1);

是否有人编写了将UPDATE语句转换为INSERT语句的工具或服务? (乍一看,它似乎超出了正则表达式的范围)

3 个答案:

答案 0 :(得分:2)

懒惰的方法。如果您有id,请插入无论id为什么,然后运行更新。

答案 1 :(得分:0)

没有任何东西超出正则表达式的范围。转储中的Foreach行,使用以下内容:

Pattern :       ^.*`id` = (\d+).*`field`='(.*)'[^']*WHERE.*$
Replacement :   INSERT INTO `table` (`id`, `field`) VALUES ('$2', $1);

答案 2 :(得分:0)

这个简单的正则表达式搜索和替换notepad ++会将任何更新转换为插入:

Search for: UPDATE (.*) SET (.*) WHERE .*$
Replace with: INSERT INTO \1 SET \2;

这假定“where”之后的内容最初是唯一键。它会更改它,以便在插入时键会自动增加。