SQL批量将“单页”栏目修改为“容器”栏目
SQL批量将 “单页”栏目 修改为 “容器”栏目
这个月接到一个“****政府”项目,为其政府输出68个子站,其中栏目结构和名称几乎雷同,其实就分类“乡镇子站”和“局级子站”两种类型!由于添加栏目节点前根据栏目表要求按节点类型添加所有节点,可未曾想到我们的系统在栏目管理权限中竟然只支持“容器”类型栏目的管理、对“单页”、“外链”类型的栏目都不支持权限分配!就这样稀里糊涂的被坑了!好了,也许是自己见识少吧,这样心里就安慰多了!回头看看,丫的几百个单页节点,要是重新删除,再添加这是不可能的!!工作量太大!因此就偷懒了,经过请教高手,最后经过一番折腾,用SQL语句搞定此任务!好了,废话说完了,该进入正题了!下面处理的过程,可能有些烦躁!
第一,首先处理一个“单页”栏目变成“容器”栏目,目的,从中找到规律,看它缺乏什么东西,好在以后一次批量替换完成!
如下图,先找这个“家伙”做实验
栏目节点为10,搞个sql测试下,如下:
update [testhsx1].[dbo].[PE_Nodes] set NodeType =1 where NodeId =10;
执行下搞定,正常已经换过了吧!----个人感觉!现在我们到后台看看!可惜后台出现这坑爹的结果!如下图:
如上图:刷新栏目,左侧已经看到将栏目类型改过来了,但是点击它,坑爹的,右侧还是”单页“的类型!
然后请教一下前端组里的高手们,原来要”清除节点设置缓存“才行!好吧,我做一下!呦西,再刷新下栏目看到以下结果,如下图:
好了,看上面两个图,我们是否发现三个问题所在;
(1)栏目的目录名 没有,但是栏目标识符存在,正常情况两个是相等的;
(2)栏目列表页模板木有,这个可是必须要有的,但是栏目首页模板在,嘿嘿,有点眉目;
(3)改成”容器“类型栏目,那就得有”内容模型“了吧;看了下也木有。
三个问题发现完毕!那接下来就得解决它!
解决问题呢,先找个数据库文档,找到 栏目的目录名和栏目列表页模板 的字段名是什么!
通过查询得知,如下图:
两个问题发现完毕,第三”内容模型“的问题呢,自己思考了下,也问了下高手们,发现还是用后台的批量设置好点!毕竟调用的内容模板不一致!
好了通过上面的观察和请教,大概知道了会出现的问题,和需要解决的问题所在,我们就开始批量修改吧!
第二:编写SQL语句,批量修改”单页“栏目为”容器“栏目;
(1)首先查询下所有单页节点
- SELECT [NodeID]
- ,[NodeIdentifier]
- ,[NodeDir]
- ,[NodeType]
- ,[NodeName]
- ,[DefaultTemplateFile]
- ,[ContainChildTemplateFile]
- FROM [testhsx1].[dbo].[PE_Nodes] where NodeType =3 and nodeID !=-2
结果如下图:
查询一番,都是我要修改的!
(2)书写修改sql语句:
- update [testhsx1].[dbo].[PE_Nodes]
- set [NodeDir] =[NodeIdentifier]
- ,[ContainChildTemplateFile]=[DefaultTemplateFile]
- where NodeType =3 and nodeID !=-2
结果如下图:
修改完毕,两个字段分别已经赋值了,现在看上面的红色框内,发现就两种模板名称,那么有木有办法就将这两个模板名称替换了呢?应该有的,相信它,好吧,我先请教了一下高手们,结果得到的答案REPLACE函数!知道函数名,那么就该知道怎么用,这是基本功不懂就问 度娘,嘿嘿!
(3)sql替换”模板名称“
- update [testhsx1].[dbo].[PE_Nodes]
- set DefaultTemplateFile=REPLACE(DefaultTemplateFile, '通用-单页', '通用-跳转到栏目下最新的信息')
- , ContainChildTemplateFile=REPLACE(ContainChildTemplateFile, '通用-单页', '通用-跳转到栏目下最新的信息')
- where NodeType =3 and nodeID !=-2
- update [testhsx1].[dbo].[PE_Nodes]
- set DefaultTemplateFile=REPLACE(DefaultTemplateFile, '通用-带侧栏单页', '通用-跳转到栏目下最新的信息')
- ,ContainChildTemplateFile=REPLACE(ContainChildTemplateFile, '通用-带侧栏单页', '通用-跳转到栏目下最新的信息')
- where NodeType =3 and nodeID !=-2
分别执行后的结果如下图:
好了,左侧不同模板目录未改变,只改变了模板名称,很好!解决问题!
好了剩下最后一步,将”单页“栏目改为”容器“栏目;
- update [testhsx1].[dbo].[PE_Nodes] set NodeType=1 where NodeType =3 and nodeID !=-2
到这里,就已经解决掉第一个和第二个问题,现在点击下”清除节点设置缓存“ 刷新,看看效果吧!
如下图:
好了,现在就剩下批量修改选定内容模板了,这个就不多说了,到此完毕!
说的有点啰嗦,但是呢,这就是处理流程!如有错误,请各位高手赐教!
用户登录
还没有账号?
立即注册