我有一个包含UPDATE语句的11MB转储,格式如下:
UPDATE `table` SET `id` = 1,`field`='etc' WHERE `table`.`id` = 1;
但是,我需要使用如下语句将这些值插入到新数据库中:
INSERT INTO `table` (`id`, `field`) VALUES ('etc', 1);
是否有人编写了将UPDATE
语句转换为INSERT
语句的工具或服务? (乍一看,它似乎超出了正则表达式的范围)
答案 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”之后的内容最初是唯一键。它会更改它,以便在插入时键会自动增加。