本帖最后由 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位加密。无法修改密码。只有将所有会员密码重置了。
|