2、数据迁移之殇:历史数据清洗与导入的常见陷阱与应对策略

数据迁移这事儿,我做了十几年,每次碰到都觉得头疼。

说白了,ERP系统上线,最怕的不是功能不会用,而是旧系统的数据搬不过来。你想想看,一个企业跑了七八年的老系统,里面什么妖魔鬼怪都有。我见过最夸张的一次,客户说他们的数据很干净,结果一检查,光客户编码就有一千多条重复的。

嗯,今天咱们就聊聊数据迁移里那些坑,以及我是怎么填坑的。

陷阱一:数据质量评估走过场

很多项目组觉得,数据迁移嘛,写个脚本导过去就行了。我一开始也这么想,直到有一次吃了大亏。

那是个制造业客户,老系统用了十年。我们按计划做了数据抽样,抽了5%的数据,看起来还行。结果全量迁移的时候,发现物料编码里混着全角半角字符,有的带空格,有的带特殊符号。导入新系统直接报错,整个项目延期了两周。

我的教训: 数据质量评估不能只做抽样。我现在的习惯是,先跑一个全量扫描脚本,把空值、重复值、格式异常全部列出来。哪怕数据量再大,这一步也不能省。

具体怎么做?我一般分三步走:

  • 第一步:字段完整性检查——必填字段有没有空值?比如客户名称、物料编码,这些空了后面没法玩。
  • 第二步:格式一致性检查——日期格式统一了吗?电话号码带不带区号?金额字段有没有千分位逗号?
  • 第三步:业务逻辑校验——比如订单的金额和明细加起来对不对?库存数量和出入库记录能不能对上?

陷阱二:历史数据清洗过度

这个坑很有意思。有些团队特别认真,想把历史数据洗得干干净净。结果呢?洗了三个月,项目黄了。

我曾经遇到一个客户,财务模块的数据有五年,他们想把每一笔凭证都核对清楚。我一看,光差异就有两千多条,每条都要找原始单据确认。这要是全做完,半年都搞不定。

我的建议: 数据清洗要分优先级。核心业务数据(比如客户、供应商、物料、BOM)必须洗到99%的准确率。而历史交易数据,只要总账能对上,明细差个千分之几,可以上线后再慢慢调。

我一般会画一个矩阵:

数据类型 清洗要求 容忍度
主数据(客户/物料/供应商) 严格清洗 0% 错误
期初库存/余额 严格核对 0.1% 以内
历史交易明细 抽样核对 1% 以内
日志/操作记录 直接迁移 不校验

陷阱三:导入顺序搞反了

这个错误我犯过一次,印象特别深。

当时急着赶进度,我先导了销售订单,再导客户主数据。结果订单里引用的客户编码,在新系统里根本不存在。导入失败不说,还得回滚重来。

为什么会这样?因为ERP系统里数据是有依赖关系的。你想想看,没有客户,哪来的订单?没有物料,哪来的BOM?

正确的导入顺序应该是:

  1. 第一步:基础主数据——客户、供应商、物料、会计科目。这些是地基。
  2. 第二步:结构数据——BOM、工艺路线、价格表。这些依赖主数据。
  3. 第三步:期初数据——库存余额、应收应付、总账余额。
  4. 第四步:历史交易——未结订单、在途采购、未清票据。

一个小技巧: 我每次做导入前,都会画一张依赖关系图。哪个表引用了哪个字段,清清楚楚。然后按依赖顺序写脚本,先导没有外键依赖的,再导有依赖的。这样基本不会出乱子。

陷阱四:没有做增量验证

很多团队喜欢一次性全量导入,然后对比总数。总数对上了,就觉得没问题了。

我告诉你,这不够。总数对得上,不代表每一条都对得上。我遇到过总数差了一分钱,查了三天才发现是四舍五入的问题。

我现在的方法是:

  • 分批次导入——每次导1000条,验证一批,再导下一批。
  • 逐字段对比——不光看总数,还要随机抽几条,把每个字段的值都对比一遍。
  • 业务场景测试——导完数据后,跑一遍业务流程。比如导完客户数据,马上试一下能不能下订单。导完库存,试一下能不能做盘点。
特别注意: 导入完成后,一定要做一次全量回滚测试。万一上线当天出问题,你得知道怎么把数据退回去。我见过有人导入失败后,花了三天才把数据清干净,那叫一个惨。

陷阱五:忽略了编码映射

这个坑最隐蔽,也最致命。

老系统的物料编码可能是"ABC-001",新系统要求改成"MAT-0001"。看起来只是改个格式,但所有引用了这个编码的地方都要改——BOM、订单、库存、价格表……

我曾经帮一个客户做编码映射,光映射表就写了三千多行。而且有些编码在老系统里是重复的,映射到新系统时,一个编码对应了多个物料。这种问题,脚本跑不出来,只能人工一条条核对。

我的应对策略:

  • 提前建立映射表——在导入前,把所有新旧编码的对应关系整理好,存成Excel或数据库表。
  • 做交叉验证——比如物料编码映射后,检查一下对应的BOM是不是也映射对了。
  • 留好回退方案——万一映射错了,能快速回退到旧编码。

一个小工具: 我习惯用Python写一个映射校验脚本。输入新旧编码对照表,自动检查有没有一对多、多对一的情况。跑一遍,所有问题一目了然。

总结一下

数据迁移这事儿,说白了就是细心活。我做了这么多年,每次上线前还是紧张。但只要你把上面五个陷阱都防住了,基本不会出大问题。

最后送大家一句话:数据迁移没有捷径,只有笨办法——多检查一遍,多验证一次,多留一个心眼。

嗯,今天就聊到这儿。下一章咱们聊聊系统切换的那些事儿,到时候见。