1/1页1 跳转到查看:4515
发新话题 回复该主题
键盘左右键可以进行前后翻页操作
帮助

成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

盼望着,盼望着,我的论坛终于全部合并完毕。

合并后的论坛详见:http://bbs.lznews.cn

这里要感谢戏水妹妹的大力支持。现在将论坛合并的前后经过记录下来,希望能给大家有合并需求的一点帮助。

我原来的论坛是动网专业版(拿银子买的),从2002年至今会员16705人,主题26075,帖子总数119241篇,数据库mdf:258M,ldf:2.26G,要转移是有很大的风险的。说心里话,动网的论坛也是不错的,无论从功能还是其他方面都优于这个论坛,但是促使我转移我的论坛是因为第一,针对动网的流氓广告太多,严重影响到我的论坛的运作,第二是discuz的品牌和对.net的期待与情感,因为我前端时间一直在用.net 2.0进行“音乐100网”(http://www.song100.cn)的开发。

2007年1月中旬我正式进行网站的转移工作。

但是一开始转移工作不是很理想,大量的数据丢失。由于5年来我的论坛栏目改来改去,后来决定放弃原来的数据,但是保留原有的用户数据。这一切进行的很顺利。2007年1月23日,论坛正式启用。旧论坛只能浏览不能发贴。

可是一段时间以来,论坛的老网友一直抱怨不方便,这样又促使我将旧论坛的数据进行转移与合并。但是还是和以前一样,论坛的转移还是出现很多错误,此后戏水对该程序进行了修改,网上的网友也发现是由于大量相同主题引起的错误,网友qiubai803提出了解决方案:http://nt.discuz.net/showtopic-9614.html

SELECT TOP 100 PERCENT *
FROM dv_topic
WHERE (title IN
          (SELECT title
        FROM dv_topic
        GROUP BY title
        HAVING COUNT(*) > 1)) and title is not null
ORDER BY title DESC
由于我的重复数据太多,索性我全部删除了这些重复的东西。

delete dv_topic
WHERE (title IN
          (SELECT title
        FROM dv_topic
        GROUP BY title
        HAVING COUNT(*) > 1)) and title is not null

用戏水提供的最新转换工具成功的对论坛的数据进行了转移,虽然丢失了450条数据,但是我还是很满意的。下面就要进行两个网站的合并了。

合并的具体过程我就不说了,我只说注意事项吧。

1、首先注意论坛各个分类的id(fid)是不是有一样的,如果有新建个分类(不要是重复的fid),将数据转过去,将fid重复的分类删除。

2、需要合并的表:

dnt_attachments

dnt_forums

dnt_forumfields

dnt_posts1

dnt_topics

3、将上述5个表从一个论坛数据库导入到另外的数据库中,并改名字(可以后面加个1进行区分)

4、进行dnt_forums、dnt_forumfields的合并

参考下列语句

insert into dnt_forums (fid, parentid, layer, pathlist, parentidlist, subforumcount, name, status, colcount, displayorder, templateid, topics, curtopics, posts, todayposts, lasttid,
                      lasttitle, lastpost, lastposterid, lastposter, allowsmilies, allowrss, allowhtml, allowbbcode, allowimgcode, allowblog, allowtrade, alloweditrules,
                      recyclebin, modnewposts, jammer, disablewatermark, inheritedmod, autoclose
) selectfid, parentid, layer, pathlist, parentidlist, subforumcount, name, status, colcount, displayorder, templateid, topics, curtopics, posts, todayposts, lasttid,
                      lasttitle, lastpost, lastposterid, lastposter, allowsmilies, allowrss, allowhtml, allowbbcode, allowimgcode, allowblog, allowtrade, alloweditrules,
                      recyclebin, modnewposts, jammer, disablewatermark, inheritedmod, autoclose
from dnt_forums1

3、检索dnt_topics的最大tid值如为10000,参考下列语句进行dnt_posts1、dnt_topics的合并,注意tid和pid等相关字段要增加一个值(这里是10000)

INSERT INTO dnt_topics
                      (tid, fid, iconid, typeid, readperm, price, poster, posterid, title, postdatetime, lastpost, lastpostid, lastposter, lastposterid, views, replies, displayorder,
                      highlight, digest, rate, hide, poll, attachment, moderated, closed, magic)
SELECT    tid + 10000 AS Expr1, fid, iconid, typeid, readperm, price, poster, posterid, title, postdatetime, lastpost, lastpostid + 10000 AS Expr2, lastposter,
                      lastposterid, views, replies, displayorder, highlight, digest, rate, hide, poll, attachment, moderated, closed, magic
FROM        dnt_topics1

4、用户表你也可以按上述方案进行,我没有导,因为我的新的论坛用户表是包含原来的数据的。但是如果用户表导入的话要先进行,也要按上述原理进行id的增加,另外还要先处理重复的用户名。之后再进行上面的数据表导入,相应的用户id也要增加相应的值。这点头脑一定清醒,否则就会出大错。

5、至此论坛在后台更新之后,数据基本没什么问题,但是你会发现被导入的数据中图片出现了问题,这个是由于上传图片的表现是用id号进行调用的。解决方法还是首先依据上述办法进行nt_attachments表的合并,同时注意aid、tid、pid的增量问题,这点有了上述的经验很好解决。

其次最重要也是最麻繁的是对正文相关内容的替换,请参考我下列语句:

UPDATE dnt_posts1 SET message = REPLACE(CAST(message AS varchar(8000)), ']901[', ']36052[') WHERE (postdatetime > '2007-1-23') AND (postdatetime < '2007-3-8') AND (message LIKE '%]901_/at%')
由于我需要导入的数据非常多1000多,手工显然不行,我考虑编程,由于我的水平问题,总是执行超时,后来想个简单的办法,利用discuz的后台执行sql语句,并在每个sql语句之间插入--/* Discuz!NT SQL Separator */-- ,我编了一个批量生成sql语句的程序,一次生成100条,执行了10次(每次执行时间很长,大约2~3分钟),一切ok了。

有什么问题大家可以在此留言或者到我的论坛提出来,协助你进行解决。
http://bbs.lznews.cn/showtopic-155713.html

最后还是感谢戏水妹妹的大力支持!!

TOP

 

回复:成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

加了个精华 多多帮助论坛的兄弟们哟
看到的去帮我点那个google广告啊www.cnblogs.com/zjneter

TOP

 

回复:成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

热烈祝贺lznews.

TOP

 

回复:成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

lz的网站我关注很久了,大概第一次看是05年我记得很清楚,lz的www用的是dvnews,哈哈,但是现在有个问题是iwms和dnt的整合一直没有出现,这个比较麻烦,也希望如果lz能整合成功了,出来说一声,最后祝lz越做越好,呵呵

TOP

 

回复:成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

祝贺一下

TOP

 

回复:成功的将动网专业版转到discuz!nt,并手工合并了新旧discuz论坛

戏水MM..:lol
技术卓越 -- 朋友的站, 欢迎捧场

TOP

 
1/1页1 跳转到
发表新主题 回复该主题