威宁热线

威宁团菜到家

[案例分享] Discuz!教程之两个Discuz!论坛合并的一般处理思路

[复制链接]
威宁热线 发表于 2021-1-1 12:46:56 | 显示全部楼层 |阅读模式
有不少站长来咨询过将两个Discuz!论坛合并的问题,目前这个问题是没有什么通用工具可用的,而且由于网站情况各不相同在实际操作中面对的问题也千差万别。本文介绍一下将网站基础数据:用户表、主题表、回复表合并的一般思路。
由于基础id:uid、tid、pid都是自增长字段,因此两个网站会有很多重复id,合并之后,其中一个网站的数想要再保持原有的id是不现实了,因此在合并过程中要记录新的id和旧的id对应关系,假设一网站A为合并目标网站,网站B的数据导入到网站A来实现合并,具体操作思路如下:
1、在A中建三个表
pre_fid_relation 字段为 newfid和oldfid 此表数据需要在正式转换数据之前列号对应关系,即就网站的版块fid对应转到新网站版块的fid;
pre_uid_relation 字段为 newuid和olduid
pre_tid_relation 字段为 newtid和oldtid

2、从B网站中依次读取 pre_ucenter_members 数据
2.1 用表中的用户名、邮箱加个随机密码注册到网站A中,注意是用uc接口的注册方法,而不是直接将数据插入到pre_ucenter_members;
2.2 记录原uid和2.1中的新uid对应关系表到 pre_uid_relation
2.3 使用2.1中读取的数据更新网站A表中newuid对应用户的password、salt、secques三个字段,这样新用户的密码就恢复成原网站的了;
2.4 注意点:合并过程中可能遇到用户名或邮箱重复的问题,需要提前在程序中有所处理;

3、合并主题表:将网站B中的pre_forum_thread数据依次读取,去掉tid字段数据,fid按照pre_fid_relation替换处理,替换authorid字段数据对应的newuid,插入到网站A的pre_forum_thread数据表中,记录newtid和oldtid对应关系到pre_tid_relation;

4、合并主题内容和回复内容数据:将网站B中的pre_forum_post数据依次读取,去掉pid和position字段数据,fid按照pre_fid_relation替换处理,替换authorid字段数据对应的newuid,替换tid字段为newtid,插入到网站A的pre_forum_post数据表中;

5、善后处理:
5.1 用户统计数据表:pre_common_member_count 按pre_uid_relation从B网站获取数据更新到新网站;
5.2 用户资料表:pre_common_member_profile 按pre_uid_relation从B网站获取数据更新到新网站;
5.3 更新网站A中各个版块的发帖数据和回复数到 pre_forum_forum 表;
5.4 以上仅针对普通主题,如果是投票、辩论、商品帖等特殊主题,还需要一次复制对应类型的附件数据并替换id对应关系后插入到新网站;

6、本帖方法仅针对用户、主题、回复三大块基础数据的转移问题,其重点是新旧网站的id对应关系的处理,如果要处理其他如门户家园数据或插件数据,可依照上面的思路针对性的操作;

回复

使用道具 举报

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

本版积分规则

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