先给结论:不要按“旧系统里有什么”决定保留项,而要按“新站上线后,哪些字段仍会驱动一个具体业务动作”来决定。做法是拿一张现有页面或一条资料记录,把每个字段标注为“上线后必须可读、必须可写、只需留档”三类;只有前两类进入新结构,第三类转成附件或归档表。这个判断先于选CMS、写迁移脚本和做页面模板。
字段能不能迁,不取决于旧数据库有多少列,而取决于关键前提是否变化。常见的变化有三种:报价方式从人工改为在线计算;客户资料从销售个人维护改为多角色共享;产品参数从文字描述改为可筛选属性。前提变了,旧字段的保留价值就会重排。
可以用两个选择成立的条件来区分:
判断时不要问“这个字段以后会不会有用”,而要问“如果它缺失,哪个页面或哪个业务动作会失败”。答不出具体动作的字段,先不进主表。
拿你手上最复杂的一条旧记录来试,不要拿最简单的。假设某条产品资料包含:产品编号、名称、分类、参数文本、价格说明、联系人、联系电话、图片路径、备注、创建时间。可以这样分:
如果某个字段既不属于可读,也不属于可写,还不能说明留档用途,就暂时不迁。暂时不迁不等于删除,旧库先冻结只读,等新站运行一段时间后再决定是否清理。
下面是一个假设例子,用来演示比较方法,不是真实项目结果。假设旧站有“价格说明”字段,取值是“面议”“含税价 1200 元起”“需根据数量确认”。新站要做一个按价格区间筛选的列表页。若直接保留原字段:
更可行的处理是拆成四个字段:price_mode(面议/固定/区间)、price_min、price_max、price_note。旧文本整体保留到price_note作为留档,新列表页只读前三个字段。动作是:先在新结构里建这四个字段,再写一条迁移规则,把能解析的旧值填入数值字段,不能解析的统一标为“面议”。这个动作的结果会直接影响下一步——如果解析失败率很高,说明旧数据本身不适合做筛选,应先改业务录入规则,而不是继续写更复杂的解析脚本。
字段清单确定后,不要立刻全量导入。先做三件事:
如果抽样时发现大量记录无法归入已定字段,说明保留项划分过粗,应回到上一步重新区分“可读、可写、留档”,而不是在导入阶段临时加字段。临时加字段会让新站结构迅速膨胀,后续模板、筛选和权限都会变复杂。
以下情况通常可以不进入新站主结构,但要有替代处理:
放弃迁入的前提是:你能说清它不再驱动任何页面、筛选、通知或对账动作。说不清就先留档,不要直接删除。
最后,把结论落成一张处理表,每行一个旧字段,列至少包含:旧字段名、含义、新字段名、类型、是否必填、是否可读、是否可写、留档方式、迁移规则、验证样例。填完后先让实际使用这些数据的人确认,再开始写导入程序。这样做的结果是:迁移脚本只处理已确认的字段,页面模板只依赖已确认的结构,后续出现缺失时也能快速定位是“当初决定不迁”还是“迁移遗漏”。
如果旧系统字段数量很多,优先处理会影响下单、报价、客服查询和内容发布的那几条记录,其余字段按同一方法分批判断。每批完成后都用一条真实业务动作验证,确认新结构能支撑该动作,再进入下一批。