当前位置: 首页 > news >正文

遗留系统数据迁移实战(八):WalkBy 抄表业务迁移里的表关系和脏数据处理

WalkBy 迁移为什么复杂

主档迁移通常比较直观:一块表对应一个设备。

WalkBy 抄表业务不一样。它至少涉及:

  • 抄表计划
  • 抄表册
  • 抄表任务
  • 当前抄表记录
  • 历史抄表记录
  • 发布记录
  • 计划和册子的关系
  • 任务和册子的关系
  • 发布记录和历史记录的关系
  • 册子和区域的关系

任何一张表没迁完整,都可能导致新系统页面打不开、任务看不到、发布记录断链。

典型表关系

可以用下面这张关系图理解:

rm_plan -> rm_rela_book_plan -> rm_book -> rm_rela_task_book -> rm_task -> rm_record rm_record_hi -> rm_rela_pub_record -> rm_pub_record rm_book -> rm_rela_book_region

其中:

  • rm_plan是抄表计划
  • rm_book是抄表册
  • rm_task是某次实际抄表任务
  • rm_record是当前任务下的抄表记录
  • rm_record_hi是历史抄表记录
  • rm_pub_record是发布批次
  • rm_rela_*是业务关系表

迁移边界怎么定

迁移时不能简单按dept_code把所有表都搬过来。

更稳妥的边界是:

以客户表具范围为核心 只迁与这些表具抄表记录相关的任务、册子、计划和发布记录

也就是说,任务是否迁移,不只看任务表本身,还要看它下面有没有目标表具的rm_record

为什么只迁有 record 的 task

正常业务逻辑下,生成抄表任务时会生成对应的抄表记录。

如果一个任务没有任何相关rm_record,通常说明:

  • 历史残留
  • 被中途删除过
  • 生成失败
  • 数据被人工改过
  • 与当前迁移范围无关

这类任务迁过去,反而可能造成新系统里出现没有意义的空任务。

所以更合理的策略是:

只迁移存在目标表具抄表记录的任务

为什么源库任务数可能比目标库多

迁移验证时,常见现象是:

源库按简单 SQL 查出 21 个任务 目标库迁移后只有 16 个任务

这时不能马上判断漏迁。

要进一步按业务唯一维度分析,例如:

计划 + 执行人 + 抄表方式 + 任务日期

如果同一天、同计划、同执行人出现多个任务,而业务上只应该有一个,就可能是历史重复任务。

目标库按唯一键幂等合并后,数量少一些是合理的。

如何向业务解释

可以这样解释:

迁移不是机械搬所有历史脏数据,而是按照正常业务可使用的数据结构迁移。 正常生成任务会生成对应抄表记录。 没有记录的任务、重复任务、跨范围关系,属于历史脏数据或无效数据。 目标系统保留可使用的任务和记录,避免把脏关系带入新系统。

如何证明重复任务

可以用类似 SQL 找出重复任务:

selectt.rm_plan_id,t.oper_id,t.rm_type_code,t.task_begin_date,count(distinctt.task_id)astask_count,group_concat(distinctt.task_idorderbyt.task_id)astask_ids,count(r.rm_record_id)asrecord_countfromrm_task tjoinrm_record ronr.task_id=t.task_idjoinas_meter monm.meter_code=r.meter_codewherem.dept_code='目标部门编码'andm.rm_type_codein('01','03')andr.rm_type_codein('01','03')groupbyt.rm_plan_id,t.oper_id,t.rm_type_code,t.task_begin_datehavingcount(distinctt.task_id)>1orderbyt.task_begin_date;

这个 SQL 的目的不是迁移,而是给业务解释:

同一业务维度下确实存在多个历史任务。

发布记录为什么也会不一致

发布记录也可能存在类似情况。

源库的发布记录可能按操作批次存了多条,但真正和目标表具历史抄表记录有关的只有一部分。

迁移时应该以rm_record_hirm_rela_pub_record的关系为准,只迁能关联到目标历史记录的发布记录。

总结

WalkBy 迁移最重要的不是“把所有表 count 对齐”,而是保证业务链路可用:

计划能看到 册子能看到 任务能看到 记录能打开 历史能追溯 发布记录不断链 区域能补偿

历史脏数据不应该原样带入新系统。迁移的目标是保留可解释、可使用、可验收的数据结构。

http://www.jsqmd.com/news/1379513/

相关文章:

  • 为AI Agent构建语义大脑:Gliding Horse本体论系统设计与实践
  • 空有技术拿不到数字孪生项目
  • 2026 乌鲁木齐定制防盗门正规服务商选型指南:适老化设计、安全标准与长期维保机制 - 中国华商产业观察网
  • 如何永久解锁IDM下载管理器:开源激活脚本的终极解决方案
  • 香港公司注册Strip鹅6年账户流程 - 资讯综合站
  • Rust 1.98 新 API 助力:浮点运算速度大幅提升,数值代码加速可期!
  • 3步终极方案:用AntiDupl.NET彻底解决电脑重复图片存储危机
  • 2026 邢台数码回收门店资讯,咨询热线13383292127|毓典奢品汇综合回收服务公示,全国连锁专业靠谱 - 毓典二奢电报员
  • 电商产品组合策略:引流品与利润品的黄金配比
  • React Unity WebGL API手册:从配置到通信的实战指南
  • 苹果CMS v10从零安装到安全部署:官方源码获取与伪静态配置详解
  • 氧乐果农药残留胶体金快速检测卡
  • 2026地坪漆口碑推荐:正规服务商甄选标准、品质对比与合作避坑全攻略 - 行业观察网
  • 前端流式数据处理演进:从EventSource到TransformStream的实战解析
  • 香港公司代收信件地址服务流程2026年 - 资讯综合站
  • C++多态深度解析:从虚函数表到设计模式应用
  • Java线程池核心原理与生产实践:从参数配置到避坑指南
  • COMSOL光纤仿真:有效折射率与损耗计算全解析
  • 2026 自贡智能衡器维修 称重软件安装地磅批发商家介绍 - LYL仔仔
  • Choral 编排式编程语言:节省 50% - 400% 代码量,提升分布式系统开发效率!
  • 指针知识点
  • 泉州经济技术开发区新房除甲醛哪家专业?多维度测评本地甲醛治理机构,鑫天成环保深度解析 - 专注室内空气检测治理
  • FIFA 23实时编辑器:打造属于你的终极足球世界
  • x86保护模式入门:从实模式到GDT的硬件级内存保护机制
  • Unity UGUI游戏设置界面开发全流程:从数据绑定到性能优化
  • 2026福建公考机构实力横评:粉笔本地化与AI驱动领跑,华图中公燃领优公学昊各具优势 - 资讯综合
  • 2026年航空航天业问题优化:数造科技陶瓷3D打印行业场景实战派 - GrowthUME
  • 香港公司真实地址挂牌流程2026年 - 资讯综合站
  • 2026宁波防水补漏检测维修哪家正规 无隐形消费商家选择指南 - 滚动商讯
  • 30分钟用SpringBoot集成DeepSeek API构建AI聊天机器人