数据迁移与初始化:旧数据怎么进来、怎么核对
给要把旧系统数据迁入新系统的人:数据是客户最怕丢的东西,迁移做对了是信任的开始,做错了是事故。这篇给你五样东西:一张迁移前盘点表、一张字段映射表、三种迁移方式的选择标准、一套四步核对法、切换与回滚的口径。
第一步:先盘点,再迁移
动手导数据之前,把旧系统里有什么盘点清楚。盘点表(示例:某零售商,3 家门店):
| 盘点项 | 内容 | 量级 | 迁移方式 | 备注 |
|---|---|---|---|---|
| 基础数据 | 商品 3,000 条、客户 1,200 人、供应商 45 家 | 小 | Excel 导入 | 与客户逐类确认字段 |
| 历史单据 | 订单 2 年约 4.1 万单 | 大 | 脚本迁移 | 只迁近 1 年,更早的留旧系统只读 |
| 附件图片 | 商品图 2,800 张 | 中 | 脚本批量搬 | 核对数量与可打开性 |
| 账务数据 | 应收应付余额 | 小 | 手工录入 + 双人复核 | 期初余额走「期初」,不走红字冲抵 |
盘点时问客户三个问题:哪些数据必须进新系统、哪些留在旧系统只读、哪些可以不要。三个答案决定迁移量——全量迁移是最贵的选择,多数客户实际要的是「近一年单据 + 全部基础数据 + 余额」。
第二步:字段映射表(迁移的核心交付物)
迁移动手前,这张表要让客户逐行确认。它是三种人的工具:开发方照它写脚本、客户照它核对、验收时照它对账。
| 旧系统字段 | 新系统字段 | 转换规则(示例) | 备注 |
|---|---|---|---|
| customer_name | customer.name | 去首尾空格;同名不同电话拆为两条 | 旧系统允许重名 |
| mobile | customer.phone | 空值保留为空;非 11 位号码进「待清洗」清单 | 预计约 60 条脏号 |
| price_level | customer.grade | 1/2/3 → 普通/银卡/金卡 | 枚举映射,客户已确认 |
| 待摊费用余额 | 预付账款(期初) | 旧科目重分类,不走明细 | 口径差异,财务已确认 |
| (无对应) | customer.source | 统一填「存量导入」 | 新系统必填字段,旧系统无来源概念 |
映射表里最有价值的是「(无对应)」和「转换规则」两行——新系统必填而旧系统没有的字段、需要重分类的科目、要清洗的脏数据,全在这里提前暴露。这张表客户不签字,脚本不开发。
第三步:三种迁移方式,按数据量和质量选
| 方式 | 适用 | 代价 | 注意 |
|---|---|---|---|
| Excel 导入 | 基础数据、万条以内、格式规整 | 客户自己就能维护;开发方出一个导入模板 | 必须先给模板让客户按格式填,自由表格导进来全是脏数据 |
| 脚本迁移 | 大量历史单据、多表关联 | 开发方写一次性脚本;旧系统要能导出结构化数据 | 先试导一轮:编码、空值、重复、孤儿记录全暴露在试导里 |
| 接口同步 | 迁移期内两系统并行 | 开发量最大;价值是切换日不用停业 | 同步必须带对账,否则漏一条都不知道 |
第四步:迁移后核对四步
迁移完成不等于迁移成功,核对签字才算:
| 步骤 | 核什么 | 怎么核 | 通过标准(示例口径) |
|---|---|---|---|
| 1 总数 | 每类数据行数 | 新旧系统各跑一次统计 | 商品 3,000→3,000,差异逐条解释 |
| 2 抽样 | 内容正确性 | 每类随机抽 20 条,新旧对照字段值 | 不合格率 >5% 整批返工 |
| 3 金额 | 钱对不对 | 旧系统应收合计 vs 新系统应收合计 | 分毫不差;对不上当天挂起,不带病切换 |
| 4 关联 | 业务链完整 | 抽 10 张历史单,从单据追到客户、商品、收款 | 每条追踪链完整 |
四步核对完,双方在核对表上签字。这张表签的是「数」;另有字段映射表签的是「口径」——旧系统的科目、状态、分类和新系统定义可能不同(旧「待摊费用」进新系统是「预付账款」),两张表都签完,旧数据才算进了新账。
第五步:切换与回滚
- 双写期:新旧系统并行 7–14 天,两边都录单,每天对两边单量,差得多了当天补——双写期要短,拖长必出事;
- 增量补迁:盘点到切换之间旧系统还会产生新数据,切换日前用最后一次脚本(或手工)把增量补进来,增量部分同样跑核对四步的 1、3 两步;
- 只读与冻结:切换当天旧系统转只读,明确告知「几点到几点不要录单」;
- 回滚线:旧系统数据未动、新系统可整库回退——切换后 48 小时内发现重大数据问题,执行回滚,回头修迁移脚本,不在线上打补丁。
使用注意三条
- 金额核对差一分钱也要挂起。差 0.01 元说明两边精度或口径不一致(常见:旧系统四舍五入规则不同、尾差摊销方式不同),这时迁的不是数据是错账——查明原因修完重迁。
- 附件是最常被忘掉的。商品图、合同扫描件——盘点单列一项,核对时数数量加抽查可打开性,两项都过才算迁完。
- 脏数据分三类处理,不要混在一起救:能自动修的(去空格、枚举映射)写进转换规则;要人判断的(重名客户、非标编码)导出清单给客户逐条认领;无主数据(孤儿记录、旧员工单据)让客户拍板丢弃还是归档——三类混着迁,返工会把人迁走。
什么时候不适用
全新项目没有旧系统:只做初始化,基础数据按导入模板整理、导入后跑核对四步的前两步。客户决定放弃旧数据的:签一份「旧系统数据归档与只读保留」说明,让它体面退休——不是所有旧数据都值得迁。
相关阅读
- 博客:数据迁移完了,没人敢关旧系统——双写、核对、切换三步收尾的完整论证;
- 案例:相关案例整理中(门店 + 网店库存系统的数据迁移实例)。
| 版本 | 适用日期 | 变更记录 |
|---|---|---|
| v1.1 | 2026-10 | 按产品/技术复审补:字段映射表(核心交付物)、增量补迁、脏数据三分类 |
| v1.0 | 2026-10 | 首版:盘点表 + 三方式 + 核对四步 + 切换回滚 |