先给结论:不要按“字段新旧”决定保留,而按“字段是否承载当前业务动作”决定。做法是给每个冲突字段标注三件事——谁在用、缺失后哪一步会停、能否用现有字段推导。三项都指向“会停且无法推导”的,进入保留清单;只服务历史查询、当前流程已不依赖的,转入归档而不是硬塞进新结构。下面把保留、改写、退出三种取舍的适用前提拆开说。
字段迁不进去,通常不是单一原因。常见有四类,处理方式完全不同:
判断顺序建议从第四类开始。一字段多义是最容易被误判为“必须保留”的情况,因为它看起来数据量很大、历史价值高,但真正的问题是语义已经分裂。此时正确动作不是保留原字段,而是先按时间或来源拆成两个新字段,再决定各自去留。
保留成立的前提是:该字段直接支撑一个当前仍在运行的动作,且缺失后没有替代数据源。例如订单流程里某个决定状态流转的标记。保留时不要原样照搬旧命名,应在新结构中给它明确的数据类型和取值范围,否则迁移后仍会继续产生脏数据。
改写成立的前提是:字段的业务含义还在,但表达形式可以转换。典型是自由文本转结构化选项、多个布尔标记合并为一个状态字段。改写的风险在于映射规则不完整,因此要先抽样验证:随机取一批旧值,按拟定规则转换,看有多少落不进任何目标选项。落空比例高,说明规则还没覆盖真实语义,应回到上一步继续拆分,而不是强行默认值。
退出成立的前提是:字段只服务历史查询,当前流程不读取,且未来查询可以用归档快照满足。退出的动作是导出独立存档并记录字段含义,而不是直接删除。直接删除会让日后核对历史数据时失去依据。
三种取舍不是非此即彼。同一批字段里,一部分保留、一部分改写、一部分退出,是正常结果。真正要避免的是“因为迁不进去所以全部保留”,那等于把旧结构的复杂度原样带进新系统。
假设有一批旧客户记录,其中“来源说明”字段是自由文本,新结构只接受固定来源选项。可以这样试:
这个试迁的动作会直接改变下一步:映射规则通过,才进入全量迁移脚本编写;不通过,就回到字段语义拆分,而不是加大人工清洗投入。注意样本量小只能说明规则是否可用,不能用来推算整体比例,所以结论应写成“规则是否覆盖主要语义”,而不是“多少百分比能迁入”。
个别样本成立不代表规则可规模化。试迁阶段能归类,往往是因为样本恰好落在规则覆盖的语义范围内。规模化后出现例外,通常有三种解释,需要分别对待:
区分方法是对例外做聚类,看它们是否共享某个来源、时间段或录入入口。共享特征明显,倾向于前两类;毫无共性,更可能是第三类。这个判断决定了是继续改规则,还是承认该字段不适合整体迁移。
一是保留字段的负责人和取值范围。没有明确取值范围,保留就只是把问题推迟到下一次迁移。二是退出字段的归档位置和说明文档,确保日后需要追溯时能找到,而不是依赖某个人的记忆。
把这两件事写进迁移记录,下一次遇到同类字段时,判断依据就是现成的,不必从头争论。字段去留的标准一旦稳定,网站制作步骤中数据迁移这一段才真正可复用,而不是每次换系统都重新拍板。