错位通常不是文件损坏,而是导入器把标题行当成了字段名、把首个数据行当成了标题,或按行号而非标识符匹配。核对的关键是找到一份能独立于导入顺序存在的对应证据,例如原始文件里每个标题旁的稳定ID,或导出前后都存在的唯一URL片段。没有这份证据时,先不要覆盖线上内容。
整体位移的特征是标题与正文成对出现,只是每对都错开一行或一列;局部错配则是部分行正确、部分行张冠李戴。两者处理方式不同。
一个可执行动作:把原始文件另存一份,只保留标识列、标题列和正文列,再按标识列排序后与导入结果逐行比对。如果排序后错位消失,说明原文件的物理顺序不可靠,后续应以标识列为准,而不是以行号为准。
此时优先走标识匹配,不要依赖标题文本。标题可能被截断、改写或去除标点,用它做键会产生假匹配。做法是导出当前内容的标识与标题,与原始文件按标识左连接,只对比标题字段。差异行即为错位行,逐条修正后再导入。
这个动作的结果会直接决定下一步:如果差异行数为零,说明错位发生在导入后的展示层而非数据层,应检查模板调用字段是否写错;如果差异行集中在少数几条,只需修正这几条,不必全量重导。
此时标题是唯一可用的匹配依据,但必须先做归一化:统一全半角、去除首尾空格、统一大小写。归一化后仍重复的标题,不能靠自动匹配,要人工指定顺序或补一个临时序号列。补序号列时注意,序号只对本次导入有效,不能当作长期标识。
若标题本身也被导入过程改写过,例如被截去后缀,那么标题匹配同样不可靠。这时应回到导出前的备份文件取原始标题,而不是拿已经被改写的标题去反推。
错位现象容易和另外两种情况混淆,需要分别取证。
假设一个例子:某次导入后前二十条标题全部对应到后一条的正文。若这二十条的标识列与原始文件完全一致,则数据层没错,错的是展示模板取错了相邻记录;若标识列本身也整体偏移一位,则是导入时跳过了表头行。两种结论对应的修复动作完全不同,所以必须先看标识列,再看标题列。
修正动作完成后,不要只看首页几条。按标识列抽样覆盖文件头部、中部、尾部和曾出现重复标题的区间,每段至少取两条,核对标题与正文是否同源。抽样通过后,再把导入规则固定下来:明确表头行是否跳过、分隔符是什么、重复标题如何处理。
需要留意的例外是,标题与正文的对应正确,不代表页面在搜索结果中的呈现会同步变化。一次改动前后的比较要放在同一需求周期内看,季节波动、搜索需求变化和数据采集口径差异都可能让表面数字偏离实际。核对对应关系这一步只解决数据准确性,不承诺任何排名结果。
把标识列作为唯一匹配依据、把标题归一化作为辅助手段、把抽样覆盖作为验收动作,这三步固定下来后,同类错位再次发生时就能快速定位到是文件层、导入层还是展示层的问题。