织梦DEDECMS利用SQL命令行工具批量修改文章来源、时间或作者的方法
dedeCMS修改mySQL还是比较方便的,
在dedeCMS后台的系统选项中有个“SQL命令行工具”,
直接在运行SQL命令行选中“多行命令”,输入SQL命令执行就OK了。
命令格式:
update (表名) set (要修改的 字段名+修改后的 赋值) where (筛选条件)
例1:批量修改已发文章的发布时候和投稿时间:
update dede_archives set pubdate=1504195200 where id>=1;
update dede_archives set senddate=1504195200 where id>=1;
SQL命令详解:
因为网站已经关联了数据库,所以数据库名不需要体现了。
update:
update是一个数据库SQL语法用语,用途是更新表中原有数据,单独使用时使用where匹配字段(条件筛选)。
表名dede_archives:
这个表,是存储文章信息的表,dedeCMS的文章信息好像是存放在两个表中一个是dede_archives 别一个dede_addonarticle(文章内容所有表)。
如果你不知道数据库结构,可以通过phpMyAdmin去查看SQL的内容就可以推断。
如果phpMyAdmin不会用,或没权限使用,就去问度娘吧。或用其它工具查看,反正你知道数据库名和密码,去折腾吧。
dedeCMS的官网好像有数据库结构介绍,可以去看看。
对了,很多小白说不知道自己的数据库名,虽然这里不会用到,也提一嘴,
可以查看你的备置文件:如dedeCMS的:就去查看dada下的common.inc.php文件。每个CMS都有这样的配置文件。
字段名pubdate和sendtate:
字段名应该是你所选择的表名下的字段结构。
这里的pubdate是指发布时间,也可能是发表时间或更新时间,即我们所能看到的文章发表的时间。
这里的senddate是指投稿时间,即首次写入数据库的时间。
这里需要注意的是,你下载的源码或cms,所发表文章的时间引用不同,而我们在前端能看到的时间也就会有所不同,
比如,有些站点是引用senddate做为前端页面能看到的“发布时间”,那么这个时间可能你在后台修改内容重新发布后,前端的时间不会被修改成当前时间。
定义不同,引用不同,时间会不会改变也就不同,反正你知道这个理就行了。字段名仅仅是取了个名字而己,具体问题需具体分析。
Unix时间戳:
这里有个概念,时间戳。在SQL中修改的时间要用到时间戳。其实它就是一个以“秒”计数的值。其它别问我,我也不懂。我是大白。
只需知道在命令中修改时间都要用时间戳方式。
其转换可以看这个工具:http://tool.chinaz.com/Tools/unixtime.aspx
where (筛选条件):
这个就是字面意思,指你要修改哪些数据内容,用条件语句筛选提取指定内容。
像例中的条件是 id>=1,就是我所要修改时间的数据需要满足id号大于1的内容。
如果条件是id>=5,那么id号小于等于5的数据就没有被选中修改!
需要注意的是,如上例中:id这个字段名需要在dede_archives表中存在!
像dede_archives表中字段名有:
writer 作者
source 文章来源
typeid 栏目ID号
……
这上结条件筛选都可以用上。灵活的很。
扩展能力:
目标:不但dedeCMS数据库你能批理修改,所有的SQL你都可以批量修改!
1、了解对应的数据库的结构。
dedeCMS的在后台系统中的“SQL命令行工具”有个数据库结构查看功能。文本框中的就是所有数据库表名,选中表名点右边的“查看表结构”可看到第一排的是字段名。后面跟着的是类型长度等定义。
其它CMS可通过phpMyAdmin等工具去查看分析表结构。或看相应的CMS系统的官方介绍。
还有就是百度,但有些二次开发的源码会对数据表进行修改添加等,那就要注意了,它就是非标准的了!
2、清楚你所要修改的段字内容的数据类型。
是字符串型的,你的set后面就要是字符类型,如:set witer ="qoogle" 这是作者,是字符串,要用引号。
是什么类型的数据就要匹配相应的类型,否则网站变会出错!
3、命令在哪输入?
dedeCMS在后台有,其它的CMS不一定有。那么您可以用phpMyAdmin或其它的数据库管理工具。
dedeCMS后台的“采集”里的“批量维护”中有个“数据库内容替换”,相当于是update命令的白话文了。本人没用过!不清楚它的“被替换内容”是不是一定要写?否则不能完成一次性批量修改。
4、学一点点SQL命令操作,对建站还是很有好处的。
……
举一反三:
dede例2:
所有文章的作者批量修改成baishitou:
update dede_archives set writer="baishitou" where id>=1;
dede例3:
作者为“管理员”的文章的作者批量修改成baishitou:
update dede_archives set writer="baishitou" where writer="管理员";
dede例4:
批量修改栏目ID号等于1的文章作者为“baishitou:
update dede_archives set writer="baishitou" where typeid=1;
dede例5:
批量修改所有文章的来源为www.baishitou.cn:
update dede_archives set source="www.baishitou.cn" where id>=1;
dede例6:
批量多个字段更新、多个条件筛选方法:
拿例1来说事:
例1原来是这的:
update dede_archives set pubdate=1504195200 where id>=1;
update dede_archives set senddate=1504195200 where id>=1;
可改为:注意多个set值用英文逗号隔开!!逗号,逗号,逗号!
update dede_archives set pubdate=1504195200,senddate=1504195200 where id>=1;
可去除where筛选条件,即修改整个dede_archives表的所有pubdate值:
update dede_archives set pubdate=1504195200,senddate=1504195200;
多where条件修改:注意,多个where值用逻辑运算符:and 和 or
update dede_archives set writer="baishitou",ource="www.baishitou.cn" where typeid=20 or writer="白石头";
逻辑运算符解释:
and:是条件1和条件2这两个条件需要同时满足才会修改!
or:是只需满足任何一个都会执行修改。
1.本站主要是为了记录工作、学习中遇到的问题,可能由于本人技术有限,内容难免有纰漏,一切内容仅供参考。
2.本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!
3.本站所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。