laowu3008 发表于 2020-11-28 19:34:45

WordPress批量替换数据库中内容SQL语句

老牛的一个网站数据量较大,接近八万条数据,需要替换所有内容中的部分内容
最快方法当然是在phpmyadmin使用sql语句来完成,替换前务必备份数据库,以免出现失误替换语句:UPDATE wp_posts SET post_content = REPLACE( post_content, 'old content A', 'new content B' )


解释:更新数据库中wp_posts表post_content字段的内容"old content A"为"new content B"(不包含双引号"")

WordPress常用SQL语句
筛选自定义meta的YouRUrl_value包含.pdf的内容,替换为.rar
UPDATE `wp_postmeta` SET `meta_value` = REPLACE( meta_value, '.pdf', '.rar' ) WHERE `meta_key` = 'YouRUrl_value' AND `meta_value` LIKE '%.pdf%'
查找wordpress自定义字段yourmeta中包含aaa.com的记录

select * from wp_postmeta WHERE `meta_key` = 'yourmeta_value' AND `meta_value` LIKE '%aaa.com%'


建立一张表来存储查找的记录

create table a_temp as select * from wp_postmeta WHERE `meta_key` = 'yourmeta_value' AND `meta_value` LIKE '%aaa.com%'
在刚才新建的表中插入包含bbb.com的记录

insert into a_temp(meta_id,post_id,meta_key,meta_value) select * from wp_postmeta WHERE `meta_key` = 'xzy1url_value' AND `meta_value` LIKE '%bbb.com%'

mysql删除斜杠/之前的内容.如果有多个斜杠/,就多执行几次

update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1)
mysql在meta_value字段原有的字符串前插入字符串aaa
update a_temp SET meta_value= CONCAT('aaa',meta_value)
mysql在meta_value字段原有的字符串后插入字符串aaa
update a_temp SET meta_value= CONCAT(meta_value,'aaa')
mysql字段的字符串中格式化
UPDATE a_temp SET meta_value = REPLACE( meta_value, ' ', '' )
UPDATE a_temp SET meta_value = REPLACE( meta_value, '.', '_' )
UPDATE a_temp SET meta_value = REPLACE( meta_value, '_rar', '.rar' )
UPDATE a_temp SET meta_value = REPLACE( meta_value, ',', '' )
UPDATE `wp_postmeta` SET `meta_value` = REPLACE( meta_value, '.pdf', '.rar' ) WHERE `meta_key` = 'yoururl_value' AND `meta_value` LIKE '%bbbb.com%'
筛选yoururl_value字段里包含bbbb.com内容的数据
select * from wp_postmeta WHERE `meta_key` = 'yoururl_value' AND `meta_value` LIKE '%bbbb.com%'

建立a_temp存放筛选出来的数据

create table a_temp as select * from wp_postmeta WHERE `meta_key` = 'yoururl_value' AND `meta_value` LIKE '%bbbb.com%'

将包含cccc.com内容的数据追加插入a_temp

insert into a_temp(meta_id,post_id,meta_key,meta_value) select * from wp_postmeta WHERE `meta_key` = 'yoururl_value' AND `meta_value` LIKE '%cccc.com%'

create table a_temp as select * from wp_postmeta WHERE `meta_key` = 'yoururl_value' AND `meta_value` LIKE '%bbbb.com%';

以下是删除/左边字符

update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
update a_temp SET meta_value = SUBSTRING(meta_value, INSTR(meta_value, '/') + 1);
替换内容中的部分字符,对内容进行格式化
UPDATE a_temp SET meta_value = REPLACE( meta_value, ' ', '' );
UPDATE a_temp SET meta_value = REPLACE( meta_value, '.', '_' );
UPDATE a_temp SET meta_value = REPLACE( meta_value, '_rar', '.rar' );
UPDATE a_temp SET meta_value = REPLACE( meta_value, ',', '' );
update a_temp SET meta_value= CONCAT('http://xxxx.com/',meta_value);
用临时表的内容替换原字段内容
DELETE FROM wp_postmeta WHERE meta_key = 'yoururl_value' AND `meta_value` LIKE '%bbbb.com%'

将a_temp表处理好后的下载地址,更新到wp_postmeta的yoururl_value

UPDATE wp_postmeta,a_tempSET wp_postmeta.meta_value=a_temp.meta_valueWHERE wp_postmeta.meta_id=a_temp.meta_id

1. 删除所有未使用的标签
DELETE a,b,c
FROM wp_terms AS a
LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
LEFT JOIN wp_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE c.taxonomy = 'post_tag' AND c.count = 0
2.删除所有文章修订版本(Revisions)以及它们的Meta数据
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision'
3. 更改WordPress地址和首页地址
UPDATE wp_options SET option_value = replace(option_value, 'http://www.旧网址.com', 'http://www.新网址.com') WHERE option_name = 'home' OR option_name = 'siteurl'
4. 更改文章的GUID
UPDATE wp_posts SET guid = REPLACE (guid, 'http://www.旧网址.com', 'http://www.新网址.com')

5. 更改正文中的链接地址
UPDATE wp_posts SET post_content = REPLACE (post_content, 'http://www.旧网址.com', 'http://www.新网址.com')
6. 更新文章的Meta值
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, 'http://www.旧网址.com', 'http://www.新网址.com')
7. 重设Admin密码
UPDATE wp_users SET user_pass = MD5( 'new_password' ) WHERE user_login = 'admin'

8. 重设admin的用户名
UPDATE wp_users SET user_login = 'newname' WHERE user_login = 'admin'
9. 将作者a的文章全部转移到作者b
UPDATE wp_posts SET post_author = 'b' WHERE post_author = 'a'

10. 删除文章的meta标签
DELETE FROM wp_postmeta WHERE meta_key = 'your-meta-key'

11. 导出所有评论中的邮件地址
SELECT DISTINCT comment_author_email FROM wp_comments

12. 删除所有的Pingback
DELETE FROM wp_comments WHERE comment_type = 'pingback'

13. 删除所有的垃圾评论
DELETE FROM wp_comments WHERE comment_approved = 'spam'

14. 禁用所有激活的插件
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins'

15. 罗列所有未使用的Meta标签
SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHEREwp.ID IS NULL

16. 关闭旧文章的留言
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish'

17. 更新留言者的网址
UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://旧网址.com', 'http://新网址.com' )
18. 更新正文内所有的’target=”_blank”‘为’rel=”nofollow”‘
UPDATE wp_posts SET post_content = REPLACE (post_content, 'target="_blank','rel="nofollow')
19.删除未使用的Meta标签
DELETE pm FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL
20.更改文章自定义字段的名称
UPDATE `wp_postmeta` SET `meta_key` = '新名称' WHERE `meta_key` = '旧名称';
21.批量修改文章的发布日期和修改日期:
update wp_posts set post_date = replace(post_date, '2020-11-25', '2020-11-23') WHERE `ID` between 653 AND 652;
update wp_posts set post_date_gmt = replace(post_date_gmt, '2020-11-25', '2020-11-23') WHERE `ID` between 612 AND 652;
update wp_posts set post_modified = replace(post_modified, '2020-11-25', '2020-11-23') WHERE `ID` between 612 AND 652;
update wp_posts set post_modified_gmt = replace(post_modified_gmt, '2020-11-25', '2020-11-23') WHERE `ID` between 612 AND 652;
字段含义:
post_date(文章发布日期)
post_date_gmt(文章发布日期,格林威治时间)
post_modified(文章修改时间)
post_modified_gmt(文章修改时间,格林威治时间)

转自:https://xiaohost.com/1647.html

夜未眠0601 发表于 2020-11-28 19:36:00

{author} 感谢楼主分享

zz007 发表于 2020-11-28 20:08:20

膜拜大神3秒钟

核动力 发表于 2020-11-28 22:10:20

支持,顶一下。

轩轩乐开怀 发表于 2020-11-29 01:43:07

非常感谢
页: [1]
查看完整版本: WordPress批量替换数据库中内容SQL语句