结论先行:只做批量导入时,最省钱的核对方式不是逐条打开文件,而是先在导入前生成一份“标题—文件标识”对照表,导入后按文件标识回查标题。这个做法在文件命名稳定、导入程序按文件名或首行标题取值时成立;一旦导入工具按发布时间、ID或目录顺序重排,对照表就会失效,必须改按导入后生成的行号或唯一标识核对。
标题与文件错位通常有三种可区分的原因。第一种是导入程序按上传顺序写入,文件名顺序与上传顺序不同;第二种是导入时先取正文首行作为标题,而正文首行并非标题;第三种是文件本身存在同名或空标题,导入后发生覆盖。核对前先看错位是否成片出现:成片错位多半是顺序问题,零星错位多半是空标题或同名文件问题。
假设有 40 个文件,其中 3 个错位,而错位的 3 个文件恰好都缺少首行标题。这个现象只能说明“缺标题的文件更容易错位”,不能单独证明导入程序按首行取值,因为也可能是上传时文件排序被打乱。要区分两者,可临时补上首行标题后重新导入一小批,观察错位是否消失。
标题本身会重复、会被截断,不适合当核对锚点。更省钱的做法是给每个文件一个稳定标识,例如文件名中的编号、日期加序号,或正文里不参与展示的固定字段。导入后按这个标识排序,再比对标题。
动作上,先导出导入后的标题与ID列表,再与导入前的对照表按ID关联。关联后如果错位集中在某一段ID区间,说明是批次顺序问题;如果分散在多个区间,说明是个别文件取值问题。这个结果决定下一步是调整导入顺序,还是修文件本身。
上面的方法有一个明确边界:当导入工具按发布时间或计划发布时间重排时,文件标识与导入后顺序不再对应。此时即使对照表完全正确,按ID关联也会得到错位结果。判断方法是看错位是否与时间字段相关——如果错位的标题总是出现在相邻时间点附近,而不是相邻文件标识附近,就应按时间字段而不是文件标识核对。
另一个边界是文件被程序自动改名或去重。如果导入后标题出现后缀数字,而原文件没有,说明程序做了去重处理,原对照表需要以去重后的标题为准重新生成,否则核对会一直对不上。
核对完成不等于问题解决。若确认是导入顺序问题,下一步是固定上传顺序或改用按标识排序导入;若确认是空标题问题,下一步是导入前批量检查标题字段是否为空;若确认是去重问题,下一步是先处理同名文件再导入。每次只改一个变量,改完后重新导入同一批样本,比较错位数量是否下降。
比较时要注意,导入时间不同、文件数量不同、程序版本不同都会影响结果,所以不要用一次改动前后的错位数量直接下结论。更稳妥的做法是保留改动前后的对照表,确认错位位置是否从“成片”变为“零星”,或从“与时间相关”变为“与标识相关”,再决定是否推广到全量。