先给结论:如果自动导出只覆盖了主列表,而分页是异步加载或按“下一页”逐段请求的,那么你看到的行数通常不能代表完整结果;只有当导出任务明确记录了分页游标、每页返回量和终止条件,并且你抽样复核过首尾页,完整性才成立。否则,遗漏分页几乎必然发生,只是漏多漏少的问题。
两种原因的应对方式完全不同,不能混在一起处理。
区分方法很直接:手动把同一查询条件翻到最后一页,记录页面显示的总条数或末页条数,再和导出文件比对。如果两者差距明显,问题在导出;如果两者一致但都很少,问题在查询条件。
不要凭感觉判断“差不多导全了”。选三个能独立验证的锚点,任何一个对不上,就说明导出不完整。
这三个锚点不需要全量核对,但必须来自界面实际可见的结果,而不是导出文件自身。用导出文件验证导出文件,等于没有验证。
假设某次导出文件行数与界面显示总数完全一致,你据此判断完整性没问题。但这里有个反例:如果界面总数本身就是按“去重后”或“预估”显示的,而行数一致只是巧合,那么重复记录被折叠、部分分页被跳过,仍然可能同时发生而总量看起来正常。
换句话说,行数相等不能单独证明完整。它只能排除“总量级遗漏”,不能排除“同量替换”——漏掉一批、重复一批,总数照样对得上。要排除这种情况,必须用关键标识做去重检查:统计导出文件中的唯一标识数量,与总行数比较。如果唯一标识数明显少于总行数,说明存在重复,重复往往伴随遗漏。
确认遗漏分页后,有两条路,选择取决于遗漏是偶发还是稳定复现。
分段导出的具体做法是:把原来的一个大范围按时间或标识区间切成若干小段,每段单独导出并各自做首尾锚点检查。段与段之间允许重叠,重叠部分用唯一标识去重。这样做的代价是导出次数增加,但换来了每段可独立验证,遗漏定位从“整批不确定”变成“某一段确定”。
上述检查方法成立的前提是:你能在界面上手动翻页并看到末页,且每条记录有稳定唯一标识。如果工具只提供导出、不提供可翻页的完整列表,或者记录本身没有稳定标识,那么锚点法失效,只能退回到分段导出加总量交叉比对,完整性判断的置信度也会下降。
另外,如果旧内容、旧系统或旧合作关系正在退出,只保留仍有价值的部分,那么检查重点应从“全量完整”转为“保留范围完整”:先明确哪些记录需要留下,再只对这些记录做锚点核对,不必为整批遗漏投入同等精力。下一步动作建议是:先固定一个最小可验证片段,确认导出机制在该片段上可靠,再逐步扩大范围;如果最小片段都无法通过锚点检查,就不要扩大,先解决导出机制本身的问题。