我有一个不正确的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%'
网址的每个返回值都彼此不同。
有什么想法吗?
答案 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%"