互联网观察 网站建设 网站运营 网络创业 电子商务 建站软件 建站软件教程 网站开发 网页制作 收藏本站
建站常识 | 域名 | 主机 | 网上开店 | 搜索引擎优化 | 网站推广 | 网络赚钱 | 站长经验 | 个人建站 | 网站设计 | 网页特效 | wap网站

论坛转换后直接用sql语句查询重建丢失的主题

几天前把数据从DvBBS6.0转到VBB,原来以为一切正常。后来发现有个版面,显示有13篇文章,但进去后怎么都只有9篇。摸索了半天发现是post表的许多文章没有收录到thread中,仔细一看不得了,我论坛2/3的帖子,大概16000篇,都成了孤魂野鬼了。幸好thread的从属结构都还没错。于是开始尝试修复。

刚开始我用手动修改的办法,对着post表的内容,在thread表建立新条目。后来发现实在太慢,于是想到直接用SQL查询实现。思路是这样的:

1、从post表提取threadid,查询它在thread表中是否存在,如果不存在,而且该条记录的parentid=0,那么就在thread表建立一条新纪录,同时直接从post提取相应数据添加过去。

2、更新新建立的thread表里的条目,因为通过第一步建立的thread都没有相应的forumid,所以这里指定一个。最好是新建立一个临时的版面。然后通过手动转移帖子的方式把帖子转移到相应版面。同时这一步也更新其他一些字段,比如open,visible,views等。由于浏览次数的数据早已丢失,这里也只能随便指定一个数字。

3、进入论坛设置——维护——更新计数器——重建主题信息。会重建主题的最后回复数据以及回帖数等。然后你可以进入临时版面移动文章了。OK.

下面是SQL命令:

INSERT INTO `vb3_thread` ( `threadid` , `title` , `firstpostid` , `lastpost` , `postusername` , `postuserid` , `lastposter` , `dateline` )
SELECT `threadid`, `title`, `postid`, `dateline`, `username`,`userid`, `username`,  `dateline`
FROM `vb3_post` WHERE `threadid` NOT IN (SELECT `threadid` FROM `vb3_thread`) AND `parentid`=0 AND (`postid` BETWEEN 1 AND 3000)

说明:这里指定每次查询3000条。查询完成之后修改相应postid数字继续执行即可。

UPDATE `vb3_thread` SET `forumid` =1120, `open`=1, `views`=40, `iconid`=1, `visible`=1 WHERE `forumid` =0

说明:这里需要指定新建立的临时版面数据,否则帖子还是无法显现并手工移动。





上一篇:那些岁月——我的vBulletin汉化历程(后记)
下一篇:mysql utf-8 gbk big5编码转换问题及解决




   版权所有 Copyright© 2006 黑马建站宝典 联系方式:heima123#gmail.com