mysql - 替换 120 多个表中的 MySQL 值

标签 mysql regex replace vbulletin

我们已将庞大的互联网服务从域 .de 重定向到域 .com - 这是讨论板 (vBulletin)。目前我们需要将所有短语(如“domainame.de”)更改为“domainame.com”:

  • 超过 120 个表格(帖子、话题)
  • 很多 MySQL 字段

有人建议如何做这样的事情吗?我们需要将字符串“domainname.de”替换为“domainname.com” - 任何地方。

最佳答案

你想做的事情听起来很危险,因为它可能会出现一些误报,并无意中改变事情。假设您的旧域名是“acme.de”,新域名是“acme.com”,并且某个随机访问者发布了以下内容(这是一个过于简化的示例):

I enjoy working with Acme.Depending on my mood.

将其转换为非常容易:

I enjoy working with Acme.compending on my mood.

因此,我的建议(按优先顺序排列):

  1. 根本不更新数据库,只需配置您的网络服务器以将 .de 流量重定向到 .com 流量。这样你就不太可能犯错误。

  2. 如果您必须更新讨论板,请在显示逻辑中进行,而不是在数据库中进行,这样您就不会犯下不可挽回的错误。

  3. 用 perl 或您最喜欢的文本处理语言编写一个脚本,该脚本对每个表/字段进行正则表达式替换。我建议采取以下策略:

    a.做一个SELECT id,<field name> FROM <table> WHERE <field name> LIKE '%domain.de%'

    b.将输出存储为 CSV 或其他易于解析的格式。

    c.运行正则表达式脚本将 domain.de 更改为 domain.com

    d.检查输出。

    e.做一个UPDATE <table> SET <field>=? WHERE id=? ,以及脚本的输出。

    首先分小块进行(一次几十或数百个帖子),并在将更改提交到数据库之前目视检查结果,以确保没有犯错误。

关于mysql - 替换 120 多个表中的 MySQL 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14121516/

相关文章:

用于关键字出现在另一个关键字后面或之后的 Java 正则表达式

SQL 替换字符串中的多个不同字符

mysql - 在遍历结果集时将数据插入 MySQL

mysql - 如何将具有多个值的 WHERE IN 子句转换为 RegExp 或 Like

mysql - 从同一类别中选择多个产品?

c# - 使用正则表达式查找函数的最佳方法?

replace - 使用Notepad++将数字替换为某种格式

python - 在不同情况下如何使用正则表达式修改 pandas 中的字符串

php - 选择并插入mysql

php - 使用 mysql 查询中的数组创建数组