通常我使用手动查找替换文本在MySQL数据库使用phpMyAdmin。我现在厌倦了,我怎么能运行一个查询,在phpMyAdmin的整个表中找到和替换一个新的文本?

例如:查找关键字domain。例如,替换为www.domain.example。


当前回答

在phpMyAdmin中运行SQL查询来查找和替换所有WordPress博客文章中的文本,例如查找mysite。Example /wordpress,然后用mysite。Example /news替换 本例中的表为tj_posts

UPDATE `tj_posts`
SET `post_content` = replace(post_content, 'mysite.example/wordpress', 'mysite.example/news')

其他回答

生成变更SQL查询(FAST)

mysql -e "SELECT CONCAT('update ', table_name,' set ', column_name,' = replace(', column_name,', " www.oldsite.example ", " www.newsite.example ");') AS语句FROM information_schema。-u root -p your_db_name_here > upgrade_script.sql . WHERE table_name LIKE 'wp_%'

删除文件开头的任何垃圾。我吃了一些。

纳米upgrade_script.sql

使用——force选项运行生成的脚本以跳过错误。(慢速-如果DB大,可以喝杯咖啡)

Mysql -u root -p your_db_name_here——force < upgrade_script.sql

phpMyAdmin包含一个简洁的查找和替换工具。

选择表,然后点击Search > Find and replace

这个查询花费了大约一分钟的时间,成功地替换了几千个oldurl实例。用新url进行扩展。列post_content中的ext

这个方法最棒的地方是:你可以在提交之前检查每个匹配。

注意:我使用phpMyAdmin 4.9.0.1

这是一个如何在数据库中查找和替换的例子

 UPDATE TABLE_NAME
 SET COLUMN = replace(COLUMN,'domain.example', 'www.domain.example') 

TABLE_NAME =>修改为你的表名

COLUMN =>将其更改为您的列,确保它存在

当在phpmyadmin中进行搜索和替换时,我有很好的运气:

更新表名SET fieldName1 = 'foo' WHERE fieldName1 = 'bar';

当然,这一次只适用于一个表。

我发现的最简单的方法是将数据库转储到一个文本文件中,运行sed命令进行替换,然后将数据库重新加载回MySQL。

下面所有命令都是Linux下的bash命令。

转储数据库到文本文件

mysqldump -u user -p databasename > ./db.sql

执行sed命令查找/替换目标字符串

sed -i 's/oldString/newString/g' ./db.sql

重新加载数据库到MySQL

mysql -u user -p databasename < ./db.sql

容易peasy。