ERP上线时,最让人头疼的事情之一,是历史数据迁移,数据迁移做不好,新系统上线第一天就是混乱的开始。这篇文章系统性地说说,ERP数据迁移常见的坑,以及怎么避免。
一、数据迁移的范围界定
首先,不是所有数据都需要迁移。
通常需要迁移的数据:
数据类型 | 是否迁移 | 说明 |
|---|---|---|
会计科目余额 | ✅ 必须 | 系统切换后的期初数据 |
客户档案 | ✅ 必须 | 基础档案,必须准确 |
供应商档案 | ✅ 必须 | 基础档案,必须准确 |
商品档案 | ✅ 必须 | 核心数据,必须准确 |
库存余额 | ✅ 必须 | 盘点后的实际库存 |
应收应付余额 | ✅ 必须 | 账龄要清楚 |
历史凭证 | ❌ 通常不迁移 | 新系统从零开始记账 |
历史订单 | ❌ 通常不迁移 | 已完成的订单归档即可 |
历史出库单 | ❌ 通常不迁移 | 已完成业务归档即可 |
迁移的是余额,不是流水,很多企业纠结于十年的历史数据要不要迁移,答案是:余额迁移,流水不迁移。
二、数据迁移的常见问题
问题一:旧系统数据格式与新系统不兼容
旧系统导出的数据,可能是Excel格式、CSV格式,甚至是需要手工录入的纸质文档,新系统导入时,往往需要对数据格式进行转换。
解决方案:
在迁移前,确认旧系统的导出能力
提前做好数据格式转换的预案
如果格式复杂,考虑使用中间件工具
问题二:旧系统数据质量差
这是最普遍的问题,很多企业旧系统用了很多年,数据质量很差:
客户名称不统一(同一个客户有多个名称)
商品编码不规范(同一商品有多个编码)
字段缺失(缺少联系方式、地址等)
解决方案:
迁移前对旧系统数据做清洗
制定数据清洗规则(如客户名称去重、商品编码规范化)
给数据清洗留足时间(通常是迁移周期的2-3倍)
问题三:编码体系冲突
旧系统的编码规则和新系统不一致,直接迁移会造成编码冲突。
解决方案:
制定新系统的编码规则
建立旧编码到新编码的对照表
迁移时按对照表进行转换
三、数据迁移的标准流程
第一步:数据评估
评估旧系统数据质量
识别需要迁移的数据范围
评估迁移工作量
第二步:数据清洗
去除重复数据
规范化字段格式
补全缺失字段
建立编码对照表
第三步:数据验证
抽样核对数据准确性
验证数据完整性
确认数据格式符合新系统要求
第四步:试迁移
在测试环境进行试迁移
验证迁移后的数据是否正确
发现并解决问题
第五步:正式迁移
选择迁移窗口(通常是业务低谷期)
执行正式迁移
迁移后立即核对
第六步:数据核对
核对余额是否准确
核对记录数量是否完整
生成迁移报告
四、迁移后的数据核对清单
基础档案核对 SELECT COUNT(*) FROM 客户表; -- 核对客户数量 SELECT COUNT(*) FROM 供应商表; -- 核对供应商数量 SELECT COUNT(*) FROM 商品表; -- 核对商品数量
余额核对 SELECT SUM(库存数量) FROM 库存余额表; -- 核对总库存数量 SELECT SUM(应收余额) FROM 应收余额表; -- 核对总应收余额 SELECT SUM(应付余额) FROM 应付余额表; -- 核对总应付余额
账龄核对(示例SQL) SELECT 客户名称, 应收余额, CASE WHEN DATEDIFF(NOW(), 单据日期) <= 30 THEN '30天内' WHEN DATEDIFF(NOW(), 单据日期) <= 60 THEN '30-60天' WHEN DATEDIFF(NOW(), 单据日期) <= 90 THEN '60-90天' ELSE '90天以上' END AS 账龄区间 FROM 应收余额表;
五、一个真实的教训
某企业上线新ERP时,客户档案没有做清洗就直接迁移,上线第一天,发现同一个客户出现了三个不同的档案:一个是成都某某公司,一个是成都XX公司,一个是某某公司成都分部。这三个其实是同一个客户,但新系统认为是三个不同的客户,结果三个档案的应收余额加起来,和老系统客户余额对不上,最后花了两个星期才把三个档案合并,数据核对清楚。
六、实施建议
1、给数据迁移留足够的缓冲时间,数据迁移的时间通常是预估的2-3倍。
2、迁移前完成数据清洗,不要把旧系统的数据问题带到新系统里。
3、选择业务低谷期进行迁移,迁移时最好停止日常业务操作,减少迁移窗口的压力。
4、保留旧系统的只读访问,迁移完成后的一段时间内,保留旧系统的查询权限,以防万一。
5、建立数据迁移的应急回滚方案,如果迁移失败,能否回滚到迁移前的状态?
数据迁移是ERP项目中技术含量最高、风险最大的环节之一,做得好新系统顺利启用, 做得差新系统第一天就是噩梦的开始,重视数据迁移,就是重视ERP项目的成败。
成都云策数链科技有限公司 | 用友四川授权服务中心 | 专注中小企业数字化转型