帮助查询在db中更改值

时间:2011-06-08 22:06:21

标签: mysql database

我最近迁移了域名,在我的数据库中,我存储了包含旧域名的完整路径,现在已破坏:)

我需要做的是从

更改数据库表中的值

http://www.olddomain.com/img/some/path

http://www.newdomain/same/dir/structure/as/old/domain

唯一需要注意的是,必须保留网址末尾的照片名称。基本上,我只需要更改主机名。

这可能吗?如果是这样,怎么样? :)

2 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE table SET column = REPLACE(column,"www.olddomain.com","www.newdomain.com");

在运行更新许多记录的查询之前,请务必确保备份数据库(如此)。

答案 1 :(得分:1)

使用MySQL数据库,在命令行上执行此操作:

1 - 将完整的数据库放入文件中:

mysqldump -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME > YOURDBNAME.sql

2 - 在之前的DB文件中将olddomain.com替换为newdomain.com:

sed -i 's/olddomain.com/newdomain.com/g' YOURDBNAME.sql

3 - 删除原始数据库中的所有表(确保您有备份),并在适用的所有表的所有行中使用替换域更新数据库:

mysql -uYOURUSERNAME -pYOURPASSWORD YOURDBNAME < YOURDBNAME.sql

这保证可行。我用它来多次更新Magento数据库(300多个表)上的域。

仅供参考, sed 是用于“过滤和转换文本”的linux / unix命令行工具,我不知道是否有Windows版本。

PS - 如果你真的需要在域中添加斜杠(/(如果你用www.example.com替换www.example.com/sitedir),你应该转义sed字符串中的斜杠,即使用\ /而不是使用/。对于这个例子,你会这样做:

sed -i 's/www.example.com\/sitedir/www.example.com/g' YOURDBNAME.sql