当前位置:  开发笔记 > 编程语言 > 正文

如何在数据库中搜索和替换字符串的所有实例?

如何解决《如何在数据库中搜索和替换字符串的所有实例?》经验,为你挑选了3个好方法。

我有一个字符串,包含在wordpress安装(服务器名称)内数千次,包含多个列,记录和表.

我想用另一台服务器的位置更新它 - 我们正在移动内容.

所以源代码就像http:// my-server1/some/link/to/something,我想用http:// my-other-server/some/link/to/something代替它.我基本上希望为http:// my-server1的每个实例重复此过程.

在MySQL中有一个简单的方法吗?一个工具?或者我不得不更新每个记录有问题吗?

谢谢,



1> cherouvim..:

一种粗略(但有效)的方法是将模式转储到文件中,仔细应用搜索和替换然后重新导入.

事实上我今天做了:)


这是单个简单值的好方法,但是在序列化数组数据的某些情况下,您也需要替换字符串的字符数,可能会失败。(wp在默认数据库中有一些)

2> Enbee..:

在谷歌搜索中遇到过这个,但这可能对某些人有所帮助.如果你知道表和列(你可以在phpMyAdmin中使用通配符搜索找到它),

UPDATE table_name SET column_name = REPLACE(column_name,' http://oldsite.com','http://newsite.com ');

用您自己的替换粗体部分.

如果您有一个大型数据库,则可以将其应用到可以遍历每个表和列的脚本中.



3> 小智..:

如果您乐意重新导入整个数据库,那么MySQL转储方法将是最好的选择.对于任何不想这样做的人 - WordPress核心安装实际上只包含11个表,其中很少是内容列,因此按列替换也同样容易.假设您没有引用链接或字符串的插件表,这将是您的SQL:

UPDATE wp_commentmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_comments SET comment_content = REPLACE(comment_content,'xcurrentx','xreplacementx');
UPDATE wp_links SET link_description = REPLACE(link_description,'xcurrentx','xreplacementx');
UPDATE wp_options SET option_value = REPLACE(option_value,'xcurrentx','xreplacementx');
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_content = REPLACE(post_content,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_title = REPLACE(post_title,'xcurrentx','xreplacementx');
UPDATE wp_posts SET post_excerpt = REPLACE(post_excerpt,'xcurrentx','xreplacementx');
UPDATE wp_term_taxonomy SET description = REPLACE(description,'xcurrentx','xreplacementx');
UPDATE wp_usermeta SET meta_value = REPLACE(meta_value,'xcurrentx','xreplacementx');

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有