替换120多个表中的MySQL值
我们已经将巨大的互联网服务从domain.de重定向到domain.com-这是讨论板(vBulletin)。目前,我们需要将所有短语(如“domainame.de”)更改为“domainame.com”:替换120多个表中的MySQL值,mysql,regex,replace,vbulletin,Mysql,Regex,Replace,Vbulletin,我们已经将巨大的互联网服务从domain.de重定向到domain.com-这是讨论板(vBulletin)。目前,我们需要将所有短语(如“domainame.de”)更改为“domainame.com”: 超过120个表(立柱、螺纹) 很多MySQL字段 有人建议怎么做这样的事吗?我们需要将字符串“domainame.de”替换为“domainname.com”-随处可见。您想做的事情听起来很危险,因为它可能会遇到一些误报,并在无意中更改内容。假设您的旧域是“acme.de”,新域是“ac
- 超过120个表(立柱、螺纹)
- 很多MySQL字段
有人建议怎么做这样的事吗?我们需要将字符串“domainame.de”替换为“domainname.com”-随处可见。您想做的事情听起来很危险,因为它可能会遇到一些误报,并在无意中更改内容。假设您的旧域是“acme.de”,新域是“acme.com”,一些随机访问者发布了以下内容(这是一个过于简化的示例): 我喜欢和Acme一起工作。这取决于我的心情 很容易将其转换为: 我喜欢和Acme一起工作。对我的情绪进行补偿 因此,我的建议是,按优先顺序:
选择id,从中选择“%domain.de%”之类的id
b。以CSV或其他易于解析的格式存储输出
c。运行正则表达式脚本将domain.de更改为domain.com
d。检查输出
e。是否执行更新集=?其中id=?
,带有脚本的输出
首先要分小块进行(一次几十篇或几百篇文章),并在将更改提交到数据库之前目视检查结果,以确保没有犯错误我不知道这是否对你有用,但是看看这个 下面的查询将提供表列表(120个表) 下一个 可以对每个表使用更新查询。您可以使用
我不擅长使用游标,但我认为在这种情况下它会有所帮助写一个脚本来实现它?您需要遍历每个表、行和列。当然,在对实时数据执行此操作之前,您应该在副本上尝试此操作,以确保其正常运行。您需要根据运行所需的时间、在实时数据库上运行这样一个脚本是否可以接受(因为在脚本运行时,您将有多个域),或者是否需要停机来做出决定。顺便说一句,我会使用PHP或类似的脚本语言来完成这一切。@halfer:等等,你是说没有特殊的SQL命令来完成这一切吗?:)@塞尔吉奥图兰采夫-我真的不想成为坏消息的传递者
:p
SELECT DISTINCT table_name
FROM
(
SELECT *
FROM information_schema.`COLUMNS` C
) t1
WHERE TABLE_SCHEMA='schema_name'