依旧是在把 JSP 版本的 MES 系统迁移到 RuoYi (SpringBoot) 框架下。目前遇到了最操心的部分,历史账号及权限的迁移部分。耗时3天,总算在测试环境跑通了。
迁移原则
在从旧系统向新系统迁移数据时,遵循以下原则:
- 不修改旧系统的数据库表结构
- 旧系统数据表对应的 RuoYi 的新数据表,需要添加
old_前缀的列,来映射旧系统的数据 ID,方便增量更新,或者排查问题。例如,用户表 sys_user 需要增加一个 old_id 列,来映射旧系统的用户 ID。
例如,账号、角色、部门、菜单、权限等数据表,都需要增加 old_id 列。
检测数据表触发器
新旧系统并行运行时,通过在旧系统的数据表上创建触发器,来检测数据的增量变化,并将变化的数据同步到新系统中。
但是,一定要确保触发器 SQL 语句能兼容各种异常数据,避免 SQL 执行报错,导致原数据表写入、更新失败。
AI 自动匹配数据
对于角色与菜单的关联关系表,由于新旧系统的菜单名并不完全一致,靠自动迁移是很难搞定的。特别是几千个菜单项时。
可以通过导出新旧菜单表,导出 CSV 文件。让 AI 去进行匹配,让 AI 将旧的菜单项,映射到新的菜单表里。
实际测试中,AI 写了一个 Python 脚本,来进行菜单的匹配。
不但通过名称匹配,还通过父级菜单来匹配,多重条件匹配,最终生成一个对应关系的 CSV 文件。
然后,再基于这个 CSV 文件,来生成批量 update sql 语句,来更新新系统的菜单 old_id 关联旧系统的菜单 ID。
关于作者 🌱
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式