Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已解决] 将其它文章系统论坛三站合一转移到DISCUZ的经过分享给需要的朋友

[复制链接]
boofan 发表于 2012-10-20 03:23:53 | 显示全部楼层 |阅读模式
本帖最后由 boofan 于 2012-10-20 03:29 编辑

在网站数据转移的过程中,遇到的一些问题做下笔记

三站合一
之前三站为:
老站雷奥 cgi论坛,一个asp+mssql的文章系统,一个asp+mssql的朋友写的论坛系统

早前将雷奥论坛转为了leadbbs


使用工具
mssql
mysql
excel 2003
access 2003
editplus
navicat8

本地搭建环境 iis6+php+mysql+asp.net+mssql

1,用户导入
用户时间表由原2000-01-01 01:01:01模式改为数字串时间
使用
update 表 set 新时间字段=unix_timestamp(旧时间字段)

需要导入的表有两个
pre_common_member
pre_ucenter_members

2,用户批量激活UC

将以下代码保存为PHP文件,上传服务器执行

<?


$dbserver ='localhost'; //此处改成数据库服务器地址
$dbuser ='root';//此处写数据库用户名
$dbpwd ='000000';//数据库密码
$dbname ='000000';//数据库名称
$charset ='gbk';//此处写字符集gbk或者utf8
$uc_pre ='pre_ucenter_';//UC表前缀
$dx_pre ='pre_';//Discuz! X2表前缀
//此行开始向下不要改动
set_time_limit(0); //0为无限制
$connect=mysql_connect($dbserver,$dbuser,$dbpwd) or die("无法连接数据库");
@mysql_select_db($dbname,$connect);
mysql_query("set names $charset");
$query = mysql_query("SELECT * FROM `{$uc_pre}members` WHERE `uid` not in(select `uid` from `{$dx_pre}common_member`) ",$connect);
while($user = mysql_fetch_array($query)) {
$password=$user[password];
mysql_query(" replace INTO `{$dx_pre}common_member` (uid,username,password,adminid,groupid,regdate,email) VALUES ('$user[uid]', '$user[username]', '$password','0','10','$user[regdate]','$user[email]') ");
mysql_query(" replace INTO `{$dx_pre}common_member_field_forum` (uid) VALUES ('$user[uid]')");
mysql_query(" replace INTO `{$dx_pre}common_member_field_home` (uid) VALUES ('$user[uid]')");
mysql_query(" replace INTO `{$dx_pre}common_member_count` (uid) VALUES ('$user[uid]')");
mysql_query(" replace INTO `{$dx_pre}common_member_profile` (uid) VALUES ('$user[uid]')");
mysql_query(" replace INTO `{$dx_pre}common_member_status` (uid) VALUES ('$user[uid]')");
}
echo "已从UC批量导入激活成功";
?>

3.导入文章
使用navicat8先将老论坛数据库转为MDB格式,再导入至pre_forum_post表
此表为贴子表
还有一个主题表
pre_forum_thread

注意两表的TID字段要统一。不然读不到回贴了。

进行到这一步时,已经成功将一个文章系统的内容成功导入致DZ。
不过有一些小问题
4.原文章系统中换行符为br,不能被DZ正确解析
update pre_forum_post set message=replace(message,'
',char(13))
使用以上命令成功搞定换行

5.导入评论时用到的命令
update ks_commentary set fid=(select fid from pre_forum_post where ks_commentary.articleid=pre_forum_post.tid)

到这里时,论坛已经正常了。这时要将另一个LEADBBS的数据也导入进来

搭建了另一个环境,官方只提供了LEADBBS转6.0的转换包。
于是,leadbbs转6.0再7.0再DZX2.0 2.5

两个论坛合并,这个难度稍大
使用了白乐天大侠的论坛合并工具。过程蛮简单的,一步成功。成功合并。

6.导入另一个论坛到现有论坛中(别人写的一个ASP论坛,用户名与文章系统相同)
这个是费时最长的一步,因老论坛数据库与DZ结构不同。主要是没有楼层记录。
另外,导入进去的序列也是乱的。
解决方法是
手工,将贴子表导出,再导为EXCEL文件。
楼层修改时按ID号排序,计算回贴楼层。
=COUNTIF(A1:A3000,g1)
这个公式计算出所有为同值的序列号数,再按另一主楼序列排序,进行楼层填充。
30000贴子数据大约半小时手工搞定。

7.版块问题
使新合并的论坛贴子导入到同版块中
update A set A.5= (select B.5 from B where B.1=A.1)

然后是同步TID与PID

导入的几次不成功均与PID有关,这一步大约重复了四次,最后成功解决。
update pre_forum_post set pid=pid+1

总结。
看样子经过这次操作,可以胜任任何系统转DZ了。
大约总共费时历经60天。(从开始动工到结束的总时间)
重要的几步熬了几个通宵,查阅无数贴子。

合并后的网站有贴子20万,注册会员2万多名。
特笔记一下,以防以后用到。也可以给需要进行此操作的朋友共享。

唯一的缺点因以前的老系统密码为16位加密。无法修改密码。只有将所有会员密码重置了。


 楼主| boofan 发表于 2012-10-20 03:28:53 | 显示全部楼层
此过程为简化记录,当中遇问题无数,当然时间有限写得比较简单,如有疑问朋友可以站短。
回复

使用道具 举报

12153556 发表于 2012-10-20 10:13:05 | 显示全部楼层
对于大多数的站长,这个作为参考还可以,支持!
回复

使用道具 举报

baxter 发表于 2012-10-20 12:16:31 | 显示全部楼层
原来密码16位MD5加密的?
回复

使用道具 举报

 楼主| boofan 发表于 2012-10-20 12:45:10 | 显示全部楼层
baxter 发表于 2012-10-20 12:16
原来密码16位MD5加密的?

我的其它系统里面是16位加密的密码。起初是想找那个登陆密码后修改为32位的LOGING登陆口,但是,因为是三个系统合并到DZ,密码形式不一,只好放弃了。
回复

使用道具 举报

baxter 发表于 2012-10-20 12:53:05 | 显示全部楼层
boofan 发表于 2012-10-20 12:45
我的其它系统里面是16位加密的密码。起初是想找那个登陆密码后修改为32位的LOGING登陆口,但是,因为是三 ...

嗯,解决了就好
回复

使用道具 举报

白乐天 发表于 2012-10-20 14:18:33 | 显示全部楼层
不同加密形式的密码也是可以兼容的(只要你知道加密方式),你看一眼dz怎么兼容dv登录的这个登录文件就明白了
https://discuz.dismall.com/thread-2142406-1-1.html

在判断密码那里对两种加密形式的密码都判断一下即可。
回复

使用道具 举报

8#
无效楼层,该帖已经被删除
 楼主| boofan 发表于 2012-10-20 20:42:21 | 显示全部楼层
白乐天 发表于 2012-10-20 14:18
不同加密形式的密码也是可以兼容的(只要你知道加密方式),你看一眼dz怎么兼容dv登录的这个登录文件就明白 ...

谢谢大侠。呵呵。我去研究看看
回复

使用道具 举报

 楼主| boofan 发表于 2012-10-25 20:08:39 | 显示全部楼层
这个贴本来就是过程分享,干嘛要解决不解决的?奇怪了。另外?申个精?也好鼓励会员把自己的经验分享给大家啊。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-12-29 05:33 , Processed in 0.030380 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表