删除或替换错误的字符串

时间:2014-01-07 16:45:00

标签: php mysql mysqldump

我有一个不正确的URL的SQL转储。

Text stuff goes here before the url <a href="http://www.incorrectsite.com/incorrecturl/2000/xxx/yyy/zzz.html>Correct Text</a>

在正确的网址

Another text stuff goes here. <a href="http://www.correctsite.com/correctsite/uploads/2000/xxx/yyy/zzz.html>Correct Text</a>. And here too.

我需要删除不正确的网址并清理SQL转储。

我可以使用

找到记录
select * from tbl_incorrect WHERE like '%incorrecturl%'

网址的每个返回值都彼此不同。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您可以将dump打开到vim并替换所有URL:

:%s/www.incorrectsite.com\/incorrecturl/www.correctsite.com\/correctsite\/uploads/g
:wq

或使用sed:

sed 's/www.incorrectsite.com\/incorrecturl/www.correctsite.com\/correctsite\/uploads/g' incorrect.sql > correct.sql

答案 1 :(得分:0)

有MySQL的本机REPLACE()方法。 http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_replace

如果必须浏览整个记录表,那么可以使用带有CURSOR的存储过程。

如果你有转储的文本版本,你也可以使用查找和替换功能,就像在unix中一样,你可以利用'sed'来regex并在SQL转储文件中替换。

答案 2 :(得分:0)

使用替换

UPDATE `table_name` SET `field_name` = replace(same_field_name, 'unwanted_text', 'wanted_text') where field_name like = "%unwanted text%"