先给结论:判断某个旧字段该不该保留,不看它过去有多重要,而看它在新系统里是否仍被至少一个当前业务流程读取、写入或展示。如果三个动作都没有,即使数据看起来完整,也应进入归档而不是迁入主表。下面分两种条件说明具体做法。
判断依据不是字段名,而是它在现有流程中的位置。可以按下面顺序确认:
实际动作可以这样落地:先选一个业务量最小的模块做试迁,把该字段的旧值和新值逐条比对。假设旧系统里某字段存的是自由文本,新系统要求枚举值,那么试迁后会出现一批无法自动匹配的记录。这批记录的数量和分布,直接决定下一步是继续扩大迁移范围,还是先补充映射规则。试迁结果不理想时,不要急着全量迁移,先把映射规则补全再重跑。
当字段不再参与新数据的写入,只用于查旧记录或生成历史报表时,把它放进主表会持续增加维护成本。更稳妥的做法是单独建一张归档表,保留原始字段名和原始值,主表只保留必要的关联键。
这样做的依据是:历史查询通常有明确的时间范围或单号范围,可以走归档表;而日常业务读写走主表,结构更干净。实施时要注意两点:一是归档表要有稳定的关联键,否则以后无法和主表记录对应;二是要明确谁有权访问归档表,避免历史数据被误改。
例外情况是,如果历史查询的频率很高,或者报表需要和当前数据实时合并展示,那么拆表带来的查询复杂度可能超过它节省的维护成本。这时可以保留字段,但要在字段命名或注释里标明它是历史用途,避免后来的人误以为它还在参与新业务。
面对一个拿不准的字段,可以问三个问题,每个问题对应不同的处理方向:
这三个问题的答案如果互相矛盾,比如没人读取但有人写入,那通常意味着旧系统里存在隐藏的自动化任务。这时要先找到那个任务,再决定字段的去留,而不是直接迁移。
无论选择保留还是归档,都要在迁移文档里写清楚:字段名、决定结果、决定依据、决定人和日期。这一步看起来繁琐,但它的作用是让下一次迁移或排查问题时,不必重新推演一遍。如果某个字段被归档,还要记录归档表的名称和关联方式,否则以后想找回来会非常困难。
回到最初的问题:旧系统字段无法完整迁入时,保留项的决定标准是当前业务是否仍在使用它。仍在读写的字段优先保留并建立映射,只供历史查询的字段转入归档表,拿不准的先做小范围试迁,用试迁结果决定下一步范围。把决定依据和结果写进文档,整个迁移过程才可复查、可回退。