首先要理解下 discuzX3.4 和 nodebb 的数据库构造,discuzX 用的是 mysql ,nodebb 用的是 mongodb 。

最重要的当然是用户相干的数据表和帖子数据表。discuzX 能查到数据表字典,nodebb 只能本人用 mongodb 的 admin 工具看了。

一、用户数据

1 、nodebb 和 discuz 数据表的对照

 Nodebb 用户表须用的数据(字段):
db.objects.findOne({username:"admin"})  -->{    "_id" : ObjectId("65cb8801e09f69ff71141520"),    "_key" : "user:1",    "joindate" : 1707837441083,    "lastonline" : 1708000177292,//"status" : "online",    "uid" : 1,    "username" : "admin",//"userslug" : "admin",    "password" : "$2a$12$VIKLGFC3AS1B4sDuVNivIOQO1HVpxjdOJXyUDBnDZqbu5nK",//"password:shaWrapped" : 1,    "email" : "32342@yeah.net",//"email:confirmed" : 1,//"groupTitle" : "[\"\"]",//"gdpr_consent" : 1,  "profileviews" : 0,      // 空间点击数 views  "reputation" : 0,       // 名誉,积分 credits    "topiccount" : 1,       // 主题 threads    "lastposttime" : 1707837441933,    "postcount" : 1,        // 帖子 posts (蕴含了主题)//"rss_token" : "17305070-9558-4f2a-bef1-aba7902e0990",    "picture" : "/assets/uploads/profile/1-profileavatar-1707989852545.jpeg",    "uploadedpicture" : "/assets/uploads/profile/1-profileavatar-1707989852545.jpeg",    "fullname" : "全名 guojin",    "aboutme" : "对于我是一个管理员",    "birthday" : "2024-02-15",    "location" : "广州",    "signature" : "签名:我是一个管理员",    "website" : "https://weibo.com/我的网"}

discuzX 的表分得比拟散,有好几个表:

pre_common_member 用户主表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO会员 id
emailchar(40)NO邮箱
usernamechar(15)NO用户名
passwordchar(32)NO明码
statustinyint(1)0NO判断用户是否曾经删除 须要 discuz 程序加判断,并减少整体清理的性能。原 home 字段为 flag
emailstatustinyint(1)0NOemail 是否通过验证 home 字段为 emailcheck
avatarstatustinyint(1)0NO是否有头像 home 字段为 avatar
videophotostatustinyint(1)0NO视频认证状态 home
adminidtinyint(1)0NO管理员 id
groupidsmallint(6) unsigned0NO会员组 id
groupexpiryint(10) unsigned0NO用户组有效期
extgroupidschar(20)NO扩大用户组
regdateint(10) unsigned0NO注册工夫
creditsint(10)0NO总积分
notifysoundtinyint(1)0NO短信声音
timeoffsetchar(4)NO时区校对
newpmsmallint(6) unsigned0NO新短消息数量
newpromptsmallint(6) unsigned0NO新揭示数目
accessmaskstinyint(1)0NO标记
allowadmincptinyint(1)0NO标记
onlyacceptfriendpmtinyint(1)0NO是否只接管好友短消息
conisbindtinyint(1) unsigned0NO用户是否绑定 QC

uc_members 用户表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO用户 ID
usernamechar(15)NO用户名
passwordchar(32)NO明码
emailchar(32)NO用户 Email
myidchar(30)NO漫游 id
myidkeychar(16)NO漫游 id
regipchar(15)NO注册 IP
regdateint(10) unsigned0NO注册工夫
lastloginipint(10)0NO上次登陆的 IP(程序转换成数值类型)
lastlogintimeint(10) unsigned0NO上次登录的工夫
saltchar(6)NO明码烦扰串,用来和明码进行配合验证,避免被暴力破解
secqueschar(8)NO用户的平安发问

pre_common_member_field_forum 用户论坛字段表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO会员 id
publishfeedtinyint(3)0NO用户自定义发送哪些类型的 feed(原字段为 customaddfeed)
customshowtinyint(1) unsigned26NO自定义帖子显示模式
customstatusvarchar(30)NO自定义头衔
medalstextNO勋章信息
sightmltextNO签名
grouptermstextNO公共用户组
authstrvarchar(20)NO找回明码验证串
groupsmediumtextNO用户所有群组
attentiongroupvarchar(255)NO用户偏好

pre_common_member_profile 用户栏目表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO会员 id
realnamevarchar(255)NO实名
gendertinyint(1)0NO性别 (0:窃密 1:男 2:女)
birthyearsmallint(6) unsigned0NO
birthmonthtinyint(3) unsigned0NO
birthdaytinyint(3) unsigned0NO
constellationvarchar(255)NO星座(依据生日主动计算)
zodiacvarchar(255)NO生肖(依据生日主动计算)
telephonevarchar(255)NO固定电话
mobilevarchar(255)NO手机
idcardtypevarchar(255)NO证件类型:身份证 护照 军官证等
idcardvarchar(255)NO证件号码
addressvarchar(255)NO邮寄地址
zipcodevarchar(255)NO邮编
nationalityvarchar(255)NO国籍
birthprovincevarchar(255)NO出世省份
birthcityvarchar(255)NO出世城市
birthdistvarchar(20)NO出世行政区/县
birthcommunityvarchar(255)NO出世小区
resideprovincevarchar(255)NO寓居省份
residecityvarchar(255)NO寓居城市
residedistvarchar(20)NO寓居行政区/县
residecommunityvarchar(255)NO居住小区
residesuitevarchar(255)NO小区、写字楼门牌号
graduateschoolvarchar(255)NO毕业学校
companyvarchar(255)NO公司
educationvarchar(255)NO学历
occupationvarchar(255)NO职业
positionvarchar(255)NO职位
revenuevarchar(255)NO年收入
affectivestatusvarchar(255)NO情感状态
lookingforvarchar(255)NO交友目标(交友类型)
bloodtypevarchar(255)NO血型
heightvarchar(255)NO身高
weightvarchar(255)NO体重
alipayvarchar(255)NO支付宝帐号
icqvarchar(255)NOICQ
qqvarchar(255)NOQQ
yahoovarchar(255)NOYAHOO
msnvarchar(255)NOMSN
taobaovarchar(255)NO阿里旺旺
sitevarchar(255)NO主页
biotextNO自我介绍 来自论坛 bio 字段
interesttextNO兴趣爱好
field1textNO自定义字段 1
field2textNO自定义字段 2
field3textNO自定义字段 3
field4textNO自定义字段 4
field5textNO自定义字段 5
field6textNO自定义字段 6
field7textNO自定义字段 7
field8textNO自定义字段 8

pre_common_member_count 用户统计表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO会员 id
extcredits1int(10)0NO声望
extcredits2int(10)0NO金钱
extcredits3int(10)0NO扩大
extcredits4int(10)0NO扩大
extcredits5int(10)0NO扩大
extcredits6int(10)0NO扩大
extcredits7int(10)0NO扩大
extcredits8int(10)0NO扩大
friendssmallint(6) unsigned0NO好友个数 home
postsmediumint(8) unsigned0NO帖子数
threadsmediumint(8) unsigned0NO主题数
digestpostssmallint(6) unsigned0NO精髓数
doingssmallint(6) unsigned0NO记录数
blogssmallint(6) unsigned0NO日志数
albumssmallint(6) unsigned0NO相册数
sharingssmallint(6) unsigned0NO分享数
attachsizeint(10) unsigned0NO上传附件占用的空间 home
viewsmediumint(8) unsigned0NO空间查看数
oltimesmallint(6) unsigned0NO在线工夫
todayattachssmallint(6) unsigned0NO当天上传附件数
todayattachsizeint(10) unsigned0NO当天上传附件容量
feedsmediumint(8) unsigned0NO播送数
followermediumint(8) unsigned0NO听众数量
followingmediumint(8) unsigned0NO收听数量
newfollowermediumint(8) unsigned0NO新增听众数量
blacklistmediumint(8) unsigned0NO拉黑用户数

pre_common_member_status 用户状态表

字段名数据类型默认值容许非空备注
uidmediumint(8) unsignedNO会员 id
regipchar(15)NO注册 IP
lastipchar(15)NO最初登录 IP
lastvisitint(10) unsigned0NO最初拜访
lastactivityint(10) unsigned0NO最初流动
lastpostint(10) unsigned0NO最初发表
lastsendmailint(10) unsigned0NO上次发送 email 工夫 home 原字段为 lastsend
invisibletinyint(1)0NO是否隐身登录
buyercreditsmallint(6)0NO买家信用等级及积分
sellercreditsmallint(6)0NO卖家信用等级及积分
favtimesmediumint(8) unsigned0NO个人空间珍藏次数
sharetimesmediumint(8) unsigned0NO个人空间分享次数
profileprogresstinyint(2) unsigned0NO个人资料完成度

2 、解决头像

discuz 默认自定义头像目录:data/attachment/forum/pw/upload/33370.jpg

discuzX 的默认自定议头像目录:

/uc_server/data/avatar/xx/xx/xx_avatar_big.jpg

其中 xx/xx/xx_ 正好是 uid ,位数不够的零碎会主动补零

因而写了个程序,把 xx_avatar_middle.jpg 文件拷贝到一个目录里(一会儿复制到服务端去),并把文字名改为 xxxxxx_avatar_big.jpg ,最初还把{uid: “xxxxxx”, path: "/assets/uploads/profile/000/dz_avatar/62011_avatar_big.jpg”} 存成 json 文件,以备前面应用。

服务端我复制到目录:~/nodebb/public/uploads/profile/dz_avatar

python 程序:

find_avatar.py

avatar_data.json

3 、nodebb discuz 用户数据对照表: