迁移范围为核心数据:用户、板块、帖子、回复。Discuz 内容为 BBCode 格式,自动转为 Markdown。
core/console/DiscuzMigrateCommand.php — 迁移命令
使用方法
方式一:一键迁移(自动导入 SQL + 迁移数据)
php yii discuz-migrate/import /path/to/discuz.sql
方式二:手动导入 SQL 后再迁移(适合大文件)
先用 mysql 命令导入
mysql -u root -p your_database < /path/to/discuz.sql
再运行迁移(跳过 SQL 导入)
php yii discuz-migrate/import --skip-sql=1
方式三:自定义表前缀
php yii discuz-migrate/import /path/to/discuz.sql discuz_
清理 Discuz 临时表(确认迁移无误后)
php yii discuz-migrate/clean
例如:
cd /www/wwwroot/bbs.yt/core
php yii discuz-migrate/import ../sql/discuz.sql
迁移附件命令:
用法
php yii discuz-migrate/import-attachments /path/to/data/attachment/forum
大概是这样
cd /www/wwwroot/bbs.yt/core
php yii discuz-migrate/import-attachments /path/to/discuz/data/attachment/forum
实现的功能:
- 从 Discuz 的 pre_forum_attachment 索引表 + 10 个分片表(_0 到 _9)读取附件元数据
- 复制文件到 MoYu 的 upload/YYYYMMDD/ 目录
- 创建 bbs_attachment 记录(保持原 aid)
- 替换帖子和回复内容中的 [attach]N[/attach] 标签为
(图片)或 文件名(文件)
- 支持重复运行,已存在的附件会跳过
迁移内容
| 数据 | 来源表 | 说明 |
|---|---|---|
| 用户 | pre_common_member + _count + _status | 用户名、邮箱、积分、角色、注册时间 |
| 板块 | pre_forum_forum + _forumfield | 板块名、描述、排序(跳过 group 类型) |
| 帖子 | pre_forum_thread + pre_forum_post(first=1) | 标题、内容(BBCode→Markdown)、浏览数、回复数 |
| 回复 | pre_forum_post(first=0) | 内容(BBCode→Markdown)、楼层号、时间 |
注意事项
- 密码:迁移用户密码已设为不可用,用户需通过"忘记密码"重置
- 可重复运行:已存在的 ID 会自动跳过
- 事务保护:全部迁移在事务中执行,失败可回滚
- BBCode 转换:支持 [b] [i] [url] [img] [quote] [code] [list] [table] 等常见标签
醉里不知天在水 𢵗水捧月扰清波。
这个牛逼的,管理员发帖居然还有时间限制
