通常我使用手动查找替换文本在MySQL数据库使用phpMyAdmin。我现在厌倦了,我怎么能运行一个查询,在phpMyAdmin的整个表中找到和替换一个新的文本?
例如:查找关键字domain。例如,替换为www.domain.example。
通常我使用手动查找替换文本在MySQL数据库使用phpMyAdmin。我现在厌倦了,我怎么能运行一个查询,在phpMyAdmin的整个表中找到和替换一个新的文本?
例如:查找关键字domain。例如,替换为www.domain.example。
当前回答
phpMyAdmin包含一个简洁的查找和替换工具。
选择表,然后点击Search > Find and replace
这个查询花费了大约一分钟的时间,成功地替换了几千个oldurl实例。用新url进行扩展。列post_content中的ext
这个方法最棒的地方是:你可以在提交之前检查每个匹配。
注意:我使用phpMyAdmin 4.9.0.1
其他回答
生成变更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
另一种选择是为数据库中的每一列生成语句:
SELECT CONCAT(
'update ', table_name ,
' set ', column_name, ' = replace(', column_name,', ''www.oldDomain.example'', ''www.newDomain.example'');'
) AS statement
FROM information_schema.columns
WHERE table_schema = 'mySchema' AND table_name LIKE 'yourPrefix_%';
这将生成一个更新语句列表,然后您可以执行这些更新语句。
UPDATE `MySQL_Table`
SET `MySQL_Table_Column` = REPLACE(`MySQL_Table_Column`, 'oldString', 'newString')
WHERE `MySQL_Table_Column` LIKE 'oldString%';
最好你把它导出为SQL文件,用visual studio代码等编辑器打开,然后找到并重新排版你的文字。 我在1分钟内替换1gig文件SQL 16个字,总共是14600个字。 这是最好的办法。 替换后保存并再次导入。 不要忘记压缩它与zip导入。
当在phpmyadmin中进行搜索和替换时,我有很好的运气:
更新表名SET fieldName1 = 'foo' WHERE fieldName1 = 'bar';
当然,这一次只适用于一个表。