先判断旧输入规范是否还值得保留:如果工具现在接受的对象标识方式与旧规范冲突,继续沿用旧格式只会让整批任务失败;如果旧规范只是字段顺序不同、核心标识仍然有效,则优先做映射改写,而不是推翻重来。真正需要退出的是那些依赖已下线对象类型的行,而不是整份输入。
对象格式变化通常有三种来源,处理方式完全不同。第一种是标识符本身变了,例如原来用内部编号,现在要求用可解析的完整对象名,这类变化必须改写,旧值无法自动推导。第二种是分隔方式变了,例如从分号改成制表符,这类属于语法层变化,可以用脚本统一替换,内容不动。第三种是对象类型被移除,例如原本支持的某种资源类型不再出现在可查询范围内,这类只能退出,不能靠格式转换救回来。
判断依据不是“工具报错没报错”,而是看错误信息指向哪一层。若报错集中在整批任务无法解析,多半是分隔符或编码问题;若报错逐行出现且指向具体对象,多半是标识符或类型问题。前者改规范即可,后者需要先清理对象清单。把这两类混在一起处理,最常见的后果是反复调整分隔符却始终无法通过校验。
旧输入规范里真正有价值的是对象标识,而不是排列方式。可以先把旧文件拆成两列:一列是稳定标识(例如业务系统里的唯一键),一列是展示用名称。稳定标识用于匹配新格式要求,展示名称只用于人工核对。这样即使工具换了对象表达方式,只要稳定标识还能映射到新对象,就不必重新收集整份清单。
具体动作:从旧规范中导出稳定标识列,与工具当前要求的对象清单做一次比对,标记出三类结果——能直接匹配、需要转换规则、完全找不到对应。比对结果直接决定下一步:能直接匹配的保留,需要转换的写映射表,找不到对应的单独列出等待人工确认。这个动作的价值在于把“整批失败”缩小成“少数待确认行”,避免因为个别对象拖累全部查询。
改写不是把旧文件另存为新格式,而是先确定新规范要求哪些字段、哪个字段是必填、哪个字段允许为空。建议按以下顺序处理:
这里的关键取舍是:不要为了凑满整批而给找不到对应的对象编造标识。编造出来的标识即使格式正确,也会让后续结果无法归因,反而增加排查成本。宁可分批提交,也不要让不可信的行进入同一批。
退出适用于三种前提:对象本身已经不存在于可查询范围;对象标识无法通过任何已有映射还原;旧合作关系或旧系统已经停止维护,保留这些对象只会持续产生无效行。满足其中任意一种,就应把该对象从输入规范中移除,并记录移除原因,便于日后核对。
需要提醒的是,某次查询返回空结果或零条记录,并不能单独证明该对象应该退出。空结果还可能来自标识格式错误、权限范围变化、查询条件过窄,或该对象在当前时间窗口内确实没有数据。要区分这些原因,可以把同一对象换一种已知有效的格式再试一次:如果换了格式就有结果,说明是格式问题;如果多种格式都为空,才更接近对象本身的问题。
假设旧输入规范里有 100 个对象,工具改为要求完整对象名。比对后发现 70 个能直接匹配,20 个需要按命名规则转换,10 个找不到对应。合理做法是:70 个直接进入新规范;20 个写转换规则并抽样校验;10 个暂不提交,先确认是否已下线。若强行把 100 个都提交,失败行会掩盖那 70 个本来可用的对象,排查成本远高于分批处理。这个例子的数字仅用于说明分类方法,不代表任何实际比例。
完成这一步后,输入规范才算真正稳定:保留的是经过验证的对象,改写的是有明确映射规则的部分,退出的是无法还原的部分。下一次工具再调整对象格式时,只需要重新检查映射表,而不必从头整理整份清单。