2019 年,我跟一家 Ontario 的 3PL 仓做 WMS 上线,8 万平方英尺,1.2 万个 SKU。上线第一周,拣货错误率从原来的 2% 直接飙到 9%,客服电话被打爆。软件没问题,接口没问题,实施顾问查了三天,最后发现问题出在老系统导进来的数据里:800 多个 SKU 没有条码,300 多个 SKU 的单位是乱的(箱和件混着用),还有 50 多个库位编码在新老系统里根本对不上。老板花了 40 万美金上系统,最后栽在几张 Excel 表上。
先说结论:主数据清洗是整个 WMS 项目里 ROI 最高的活。它不花什么钱,但不做,上线后你花的每一分钱都在给它擦屁股。我这些年见过太多项目延期,根子都不在软件,在数据。
很多人觉得数据迁移就是导个表。错了。老系统里的数据,是给人看的;WMS 要的数据,是给机器执行的。人看"大概 2 箱"能理解,机器不行——单位错了,补货算法就全错;条码缺了,扫描流程就卡死;库位对不上,任务就下发到空气里。
第一张清单:SKU 主数据,五个字段一个都不能少
SKU 是主数据里最脏的部分。清单如下,逐条过:
条码:每个 SKU 至少有一个可扫描的条码(UPC 或内部码)。我见过最离谱的仓,1.2 万个 SKU 里 800 个没条码,收货全靠人工认货。解决办法很土但有效:上线前 4 周,把没条码的 SKU 拉出来,打印内部条码贴上。别指望"上线后再补",上线后你连贴条码的时间都没有。
单位与换算:件、内盒、箱、托盘,每一级都要有换算关系。最常见的坑是"一品多单位"——同一个 SKU,采购按箱入库,销售按件出库,老系统里只记了箱。导进 WMS 前,必须把"1 箱=24 件"这种换算补全,否则拣货任务下发的数量全是错的。
重量和体积:这两个字段决定运费测算和库位分配。没有重量的 SKU,系统没法做装车优化;没有体积的,补货算法算不准库位容量。实测方法:抽 200 个代表性 SKU 上秤上尺,剩下的按品类估算,总比空着强。
效期与批次属性:食品、医药、化妆品仓必须标"是否管效期"。这个字段决定了 WMS 要不要启用 FEFO(先到期先出)逻辑,选错了后面改等于重做流程。
危险品标识:带电池、带液体的 SKU 提前标出来,决定了能不能和普通货同区存放。等消防来查的时候再补,就晚了。

第二张清单:库位主数据,幽灵库位是头号杀手
库位数据的问题比 SKU 更隐蔽,因为平时没人看。清单三条:
编码规则统一:新老系统的库位编码必须一对一映射。我见过老系统用"A-01-02",新系统要求"A0102",导数据的时候直接截断,结果 300 个库位在新系统里成了"不存在"。映射表要人工逐条确认,别信脚本。
库位属性:每个库位标清楚是拣选位、存储位、退货暂存还是异常区。属性错了,系统会把大批量存货补到只有 2 米高的拣选位上,现场直接堆不下。
幽灵库位清理:系统里有、现场没有的库位,或者现场有、系统里没有的,上线前必须实地走一遍。我一般让两个小组交叉盘库位:一个人拿着系统清单去现场找,一个人在现场贴标签回系统对。8 万平方英尺的仓,两个人两天能走完。
第三张清单:期初库存,宁可慢三天,不可错一笔
数据导进去了,库存结余必须准。我的铁律:上线前做一次全盘,不是抽盘。抽盘 98% 的准确率听起来不错,但剩下 2% 的差异会在上线第一周全部爆发成拣货异常。
全盘的时候顺手做三件事:呆滞品先标记出来,能清掉的清掉,别把垃圾数据带进新系统;批次号不规范的老库存,重新赋码;效期只剩 30 天的货,单独列出来,上线后优先出。
时间表我一般这样排:T-6 周开始 SKU 清洗,T-4 周开始库位实地核对,T-2 周做全盘并冻结数据(冻结之后老系统只出不进),T-1 周做导数演练。整个清洗工作,一个 1 万 SKU 的仓,2 个人 3 周能干完。对比一下:不做清洗,上线后返工至少 6 周,还要搭上客户的信任。
不洗的代价:那家 Ontario 的仓后来花了多少钱返工
说回开头那家 Ontario 的仓。数据没洗干净上线,第一周拣货错误率 9%,第二周客户开始罚款——3PL 的合同里一般都有准确率条款,低于 98.5% 就要赔。第三周,老板扛不住了,叫停了所有新客户上线,抽 2 个全职花了 3 周返工:重新贴条码、补单位换算、实地核库位。
这笔账:3 周返工的人工 2 万多美金,客户罚款 1 万多,项目延期 1 个月(顾问费多付 3 万),加起来 6 万多美金。而当初如果花 2 周做清洗,成本不到 1 万。数据清洗不是成本,是整个项目最便宜的保险。
数据得有主人:谁对哪张表负责
清单有了,还得有人认领。我见过数据清洗烂尾的项目,十个有九个是"大家都在弄,没人负责"。我的分法:
SKU 主数据归采购或产品部门:只有他们知道"这个 SKU 到底有几个包装规格"。仓储的人对着 Excel 猜,猜错是必然的。每个品类指定一个人,他签字,这批 SKU 才算洗完。
库位主数据归仓储运营:现场是他们的地盘,幽灵库位只有天天在现场的人找得出来。让班组长带队走,实施顾问在旁边记,别反过来。
库存结余归财务加仓储双签:期初库存进了新系统,就是财务账的期初数。对不上,月底结账有你哭的。双签的意思是:数量仓储认,金额财务认。
还有一条铁律:实施顾问只给模板和校验规则,不替你背数据的锅。合同里写清楚数据准备是甲方责任,否则上线延期,顾问一句"数据没准备好"就把锅甩回来了。
导数演练:正式导之前先跑两遍
数据洗完了,别直接导生产环境。标准动作是两次演练:
第一次导 10% 抽样,验逻辑:条码有没有重复、单位换算空没空、库位编码能不能在新系统里找到。校验规则可以写得很土,比如 Excel 里一个 COUNTIF 查条码重复,一个 VLOOKUP 查库位映射,土但管用。
第二次全量演练,掐表计时:1.2 万个 SKU 加 8 千个库位,导一次要多久?回滚要多久?这两个时间决定了你上线当晚的时间窗口。我一般要求全量导数加校验在 4 小时内跑完,超过 4 小时,说明数据量或脚本有问题,先优化再定上线日期。
T-2 周数据冻结之后,老系统"只出不进":不再新增 SKU、不再调整库位。这两周新增的货走手工台账,上线后第一天统一补录。冻结期最怕有人偷偷在老系统里改数据,改一笔,新系统就差一笔——冻结通知要发到每一个相关的人,纸质签字最好。
最后给一个明天就能用的动作:把你老系统的 SKU 表导出来,按"无条码、无重量、多单位"三个条件筛一遍,看看有多少行标红。这个数字,就是你 WMS 项目真正的风险敞口。先把这张表收拾干净,再谈上线。











