先给结论:不要因为最后一页没出现、进度条走完、或导出文件里行数看起来“差不多”就判定完整。自动导出遗漏分页通常有三种可区分的原因——分页参数没有被脚本正确传递、导出上限在中间截断、以及页面本身在翻页时返回了空结果。检查完整性的核心动作,是拿一个可独立验证的总量做交叉核对,而不是只看导出文件是否生成成功。总量对不上时,优先保留原始分页响应,再决定改写脚本还是退出自动导出。
自动导出脚本最容易骗人的地方,是它只报告“成功导出 N 行”,却不告诉你应该有多少行。要检查完整性,先找到一个不依赖该脚本的总量来源。常见做法有三种:
这三种来源各有前提。手动翻页适合结果量不大、页数稳定的查询;汇总计数适合界面提供总数且该总数与明细口径一致;拆分条件适合总数不透明、但你能按词根或地域切分的情况。如果三个来源互相矛盾,说明口径本身没对齐,此时任何“完整性检查”都不可靠,应先固定口径再继续。
当导出确实遗漏了分页,你需要做一个取舍,而不是默认继续跑脚本。
保留适用于:遗漏只发生在尾部少量页,且你能用另一条独立路径补齐这几页。此时保留已导出的部分、单独补抓缺失区间,代价最小。前提是你已经知道缺失的是哪一段,而不是只知道“总数不对”。
改写适用于:遗漏反复出现在同一位置,或每次遗漏的页数随结果量增长。这通常指向分页参数、游标或去重逻辑的问题,而不是偶发网络错误。改写前先记录一次完整的分页请求序列,确认脚本发出的页码或游标是否连续、是否有重复或跳号。如果序列本身是连续的但结果仍缺,问题更可能在服务端返回或去重环节。
退出适用于:该查询的结果量已经超出自动导出的稳定处理范围,或分页顺序本身不稳定(同一查询两次翻页返回不同集合)。在这种情况下继续修补脚本的收益很低,改用更小的子条件集合、或改为分批人工核验,反而更可控。退出不是失败,而是承认当前工具与当前查询规模不匹配。
光知道“少了”不够,要能区分是哪种少。可以按下面的证据链排查:
这里要提醒一点:请求量、抓取量或某个计数突然归零,并不能单独证明你的处理是正确的。归零也可能是查询条件写错、时间窗口为空、或权限变化导致的。归零只是一个信号,必须结合上面的独立总量一起判断。
假设某查询手动翻页显示共有 12 页,每页 100 条,预期约 1200 条。自动导出只得到 940 条,脚本日志显示请求了 10 页。此时可以先不急着改脚本,而是单独请求第 11、12 页:若这两页能正常返回,说明脚本的终止条件在第 10 页就停了,属于分页终止逻辑问题,适合改写;若第 11、12 页返回空,说明手动看到的页数可能包含了已被过滤的结果,属于口径问题,适合先对齐口径再决定是否保留。这个例子中的数字仅用于说明比较方法,不代表任何真实工具的固定行为。
无论你选择保留、改写还是退出,都建议在导出文件之外单独保存一份分页请求记录:请求的页码或游标、返回条数、时间戳。这份记录的价值在于,下次出现遗漏时你能直接对比,而不是重新猜测。如果决定改写,先用小范围查询验证改写后的脚本能否稳定复现手动翻页的总数;只有在小范围上对得上,再放大到完整查询。如果决定退出自动导出,就把查询拆成若干可独立核对的小集合,每个集合单独验证完整性。完整性检查的终点不是“文件生成了”,而是“我能用一个独立来源解释这个总数”。