查询替换数据库所有表中的术语

Posted

技术标签:

【中文标题】查询替换数据库所有表中的术语【英文标题】:query to replace term in all tables of database 【发布时间】:2017-08-09 07:21:56 【问题描述】:

我想搜索http://example.com并替换为https://example.com

我知道我可以使用这种方法定位特定的表和列:

UPDATE table_name SET post_content = REPLACE(column_name, 'http://example.com', 'https://example.com');

但是如何运行针对所有表/列的查询:整个数据库?

【问题讨论】:

Search & replace 'http' to 'https' in database的可能重复 【参考方案1】:

有两种方法可以做到这一点。第一个是通过 information_schema 创建 SQL UPDATE 并将其作为准备好的语句执行。这是很多工作。

如果可以进行替换,则必须查看每一列,因此必须忽略 INTS 和 ENUM 等。

第二种方法不是真正的 SQL 更改,但它有效:从您的数据库生成一个完整的 SQL-Dump,并通过编辑器或通过命令行使用 AWK 或 SED 在此文件中进行更改。在此之后您可以导入更改的文件

【讨论】:

【参考方案2】:

进行数据库转储并将其作为文本文件打开。查找和替换。保存然后重新导入。

据我所知,我认为您不能在一个查询中对所有表使用 REPLACE。

【讨论】:

以上是关于查询替换数据库所有表中的术语的主要内容,如果未能解决你的问题,请参考以下文章

使用 MySQL 查询查找和替换整个表中的文本

使用 MySQL 查询查找和替换整个表中的文本

使用 MySQL 查询查找和替换整个表中的文本

怎么在数据库所有的表中查找数据

调整替换所有表中的所有字符串以使用文本

表的增删查改