数据转换

数据转换开发

版本 v1.0.1· 张先生 · 16 次获取 · 开发
将 XIUNO BBS、Discuz!X 3.x 数据库备份导入并迁移至社区插件与用户;支持附件、网盘资源、付费阅读、隐藏内容、音频媒体检测。
免费

详情介绍

一、插件简介

数据转换插件面向站长「旧站迁新站」场景:上传 XIUNO BBS 或 Discuz!X 3.x 导出的 SQL / 压缩包,自动识别源站类型与表前缀,按模块迁移到本站业务表(用户、社区版块/主题/回复/标签等)。支持保留原站密码、随机头像、附件/网盘/音频/隐藏内容/付费阅读等扩展字段;过程导入表不改名,迁移成功后自动清理,最终只保留本系统表。

入口路径
后台管理/admin/dataconvert
配置应用中心 → 数据转换 → 配置
登录桥接POST /dataconvert/auth/login(保留原站密码时由社区登录桥接)
无前台页面:普通用户无独立入口;仅后台完成上传、检测与迁移。

二、核心能力

能力说明
源站识别自动识别 XIUNO(bbs_*)与 Discuz!X(如 pre_common_member),也可手动指定
备份上传支持 .sql / .zip / .gz,大小上限可配
分模块迁移版块、用户、主题、回复、标签、附件、音频、隐藏内容、网盘
不改表名检测时按源站原表名临时导入,不写成站点前缀或 dcN_ 临时名
过程表清理迁移成功立即删除源站过程表;也可手动清理;可按时长自动清理
保留原站密码旧 hash+salt 存插件表;登录成功后自动升级为 bcrypt(不改核心 User
随机头像可选对接「内置头像」插件为迁移用户分配头像
版块重写可选清空本站社区分类后按源站重建
付费与隐藏主题付费字段、附件/网盘价格、[hide] 块随对应模块迁移
音频外链识别 XIUNO data-xn-local-music 播放器外链写入 topic_audio
ID 映射dataconvert_map 记录旧 ID → 新 ID,支持分次补迁

迁移模块一览

模块写入目标可选依赖插件
版块/分类community_categorycommunity
用户user + 可选旧密码表community / 登录体系
主题帖community_topic(含付费阅读字段)community;建议 paidread
回复community_replycommunity
标签社区标签体系community
附件topic_attachmentattachment
音频媒体topic_audioaudio
隐藏内容hide_blockhide
网盘资源netdisk_filenetdisk

三、依赖与安装

  1. 硬依赖:建议先安装并启用 community(社区),否则用户/主题等模块无意义。
  2. 可选依赖(勾选对应模块前请先安装):
  • attachment:附件上传
  • netdisk:网盘资源
  • audio:帖内音频播放
  • hide:正文 [hide] 隐藏块
  • paidread:付费阅读展示(字段仍可写入主题表)
  • avatars:迁移用户随机头像
  1. 将插件置于 plugins/dataconvert/,应用中心安装「数据转换」。
  2. 安装执行 install.sql,创建会话/映射/旧密码表,复制静态资源,注册后台菜单与权限。
  3. 生产环境迁移前请先用 backup 插件完整备份。

四、应用中心基础配置

字段来自 DataconvertPlugin::configSchema()

配置项类型默认值说明
启用数据转换 enabled开关关闭后后台入口仍可见,但无法上传与迁移
保留原站密码 preserve_password开关迁移旧站 hash+salt;社区登录按旧算法校验,成功后升级 bcrypt
迁移用户使用随机头像 random_avatar开关需安装「内置头像」;开启后为迁移用户随机分配头像
上传大小上限(MB) max_upload_mb数字200SQL / 压缩包大小限制
临时表保留(小时) keep_temp_hours数字24检测导入的源站过程表超时清理;0=不按时长清理(迁移成功仍会立即清理)
迁移用户默认密码 migrate_password文本ChangeMe@2026仅关闭「保留原站密码」或源站 hash 无效时使用

五、后台重点配置

后台 数据转换/admin/dataconvert)分三步:

1. 上传备份

操作说明
源程序类型自动识别 / XIUNO BBS / Discuz!X 3.x
选择文件并上传创建 dataconvert_session,保存备份到会话目录

2. 检测数据表

操作路径说明
开始检测POST /admin/dataconvert/detect按原表名导入 SQL,扫描表与模块预估行数

检测结果展示源表前缀、过程表数量、各表行数与模块归属;依赖插件未安装时对应模块会提示不可选。

3. 选择模块并迁移

操作路径说明
开始迁移POST /admin/dataconvert/migrate按勾选模块写入本站业务表
清理导入源表POST /admin/dataconvert/cleanup删除过程表与会话临时文件

可选:清空并重写本站版块(须同时勾选「版块/分类」)。

后台接口

方法路径说明
GET/admin/dataconvert管理页
POST/admin/dataconvert/upload上传备份
POST/admin/dataconvert/detect检测并导入过程表
POST/admin/dataconvert/migrate执行迁移
POST/admin/dataconvert/cleanup清理过程表

六、前台用户流程

普通用户无独立「数据转换」页面。

若开启「保留原站密码」:

  1. 迁移用户使用原用户名登录社区。
  2. 插件登录桥接按旧站算法校验(XIUNO / Discuz)。
  3. 校验成功后写入 bcrypt,标记旧密码已升级,后续走本站标准登录。

七、后台审核与运维

场景建议
迁移前完整备份本站;在测试库先跑一遍
模块顺序建议:版块 → 用户 → 主题 → 回复 → 标签 → 附件/音频/隐藏/网盘
分次补迁同一会话用 dataconvert_map 跳过已映射 ID;音频外链可在源表已清理后从主题正文回扫
过程表迁移成功会自动删除 bbs_* 等源表及历史误导入的 {前缀}bbs_*;勿把业务表当过程表
大文件调高 PHP upload_max_filesize / post_max_size / max_execution_time,与插件上传上限一致
版块重写会删除全部社区分类;未重迁主题可能导致分类 ID 悬空

八、特殊说明

数据表

说明
dataconvert_session上传/检测/迁移会话与结果 JSON
dataconvert_map旧 ID → 新 ID 映射(user/topic/audio 等)
dataconvert_legacy_password迁移用户旧站密码,登录升级后标记 upgraded

服务类(节选)

  • UploadService / DetectService / MigrateService:上传、检测、迁移编排
  • SqlImportService:SQL 拆分导入(不改表名)
  • SessionService:会话、映射、过程表安全删除
  • XiunoAdapter / DiscuzAdapter:源站适配
  • ContentAnalyzer:网盘、[hide]、音频外链等解析
  • LegacyPasswordService + LoginBridge:旧密码校验与升级

安全

  • 过程表删除带白名单保护,不会误删 usercommunity_*dataconvert_* 等本站表。
  • 迁移仅管理员后台操作;请限制后台账号权限。
  • 「清空并重写版块」不可逆,务必确认勾选意图。

九、推荐上线清单

  • 安装 community,并按需安装 attachment / netdisk / audio / hide / paidread / avatars
  • 安装 dataconvert,开启「启用数据转换」
  • 确认「保留原站密码」策略与默认密码
  • 用 backup 完整备份本站
  • 上传旧站 SQL,检测通过后先迁版块+用户小批量验证
  • 再迁主题/回复/标签及扩展模块
  • 抽查:登录(旧密码)、付费帖、附件价、网盘提取码、音频播放、[hide]
  • 确认过程源表已清理,本站仅剩业务表
  • 迁移完成后可关闭插件开关,避免误操作

十、常见问题

Q:检测后库里多了很多 `bbs_*` 表? 这是过程导入表,不改名以便读取。迁移成功会自动删除;也可点「清理导入源表」。

Q:为什么不要改成 `zsens_bbs_*`? 避免与本站前缀混淆、残留脏表;正式数据只写入 Db::name(...) 对应的本站表。

Q:迁移用户无法登录? 确认「保留原站密码」开启且 dataconvert_legacy_password 有记录;关闭时使用配置的默认密码。首次成功登录后会升级为 bcrypt。

Q:帖子有音频外链但迁完不能播? 需安装 audio 并勾选「音频媒体」。XIUNO 播放器在 data-xn-local-musichref 中,新版本会解析该外链;可对已迁主题再次勾选音频模块补迁。

Q:附件/网盘变成免费? 确认勾选了附件、网盘模块,且源数据含价格字段或 #KH 标记;可对同会话再次迁移以补丁价格。

Q:`[hide]` 没有效果? 需安装 hide 插件并勾选「隐藏内容」模块。

Q:清空版块后主题分类不对? 重写版块会删光分类;请同时(或随后)迁移主题,使分类映射重建。

Q:源表已删还能补迁音频吗? 可以。若主题正文仍保留播放器标记,音频模块会从本站 community_topic.content 回扫外链。

更新记录 (1)

  • v1.0.0 2026-08-24
    首次发布
微信客服 微信客服