织梦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:是只需满足任何一个都会执行修改。

THE END