先给结论:自动导出遗漏分页,多数不是“工具漏了”,而是导出范围、分页游标或增量条件三者中有一项没有覆盖全量。要验证完整性,最可靠的动作是拿一个已知总量的对象做对照——比如站点地图里的URL总数、数据库里的记录数,或一份人工整理的小样本——再用同一条件重新导出,比对数量与首尾记录。下面以“一批准备下线的旧内容页面”为对象,逐步说明怎么查。
自动导出遗漏分页,第一嫌疑是模式选错。全量导出按某一时点的完整集合取数,增量导出只取上次之后新增或变更的部分。如果旧内容已经很久没更新,增量条件会把它们整体跳过,看起来就像分页丢了。
判断方法:查看导出任务里是否带有时间范围、状态筛选或“仅变更”选项。若有,先把条件清空,改为全量,再跑一次。若数量明显变大,说明之前的遗漏来自筛选条件,而不是分页逻辑。这一步的结果直接决定下一步:条件问题就改条件,条件已清空仍缺,才继续查分页。
分页遗漏通常有固定形态:要么缺最后一页,要么缺中间某页,要么每页边界处重复或跳号。用三个点就能区分:
只有尾条缺失、首条和总数接近,多半是翻页终止条件写错,比如把“最后一页为空”当成结束。首条就错,通常是排序字段不稳定,分页游标在等值记录上打转。中间缺页则常见于并发写入导致偏移量漂移。
假设你手上有一批准备退出的旧内容,共200条,导出后得到180条。先别急着补跑,按下面顺序排查:
这个例子里,数字只是用来演示比较方法,不代表任何真实工具的额度。关键动作是“换唯一排序再导一次”,它的结果把问题一分为二,直接决定你是改排序还是改分批策略。
当单次导出有上限,必须按区间分批时,完整性检查要落在拼接结果上。做法是:
如果去重后仍少于总量,缺口可能在两批之间的空档,而不是某一批内部。此时应按缺口位置缩小范围,单独重导那一段,而不是整批重跑。
有几个信号容易被误读。请求量归零,可能只是任务被缓存命中或提前终止,不代表取全了。抓取日志里没有报错,可能只是错误被吞掉或写进了另一个日志。导出文件能正常打开,也不代表条数正确。这些现象都只是线索,必须回到“与已知总量对照”这一条硬标准上。
另外,如果源系统本身在导出期间有写入,任何基于偏移量的分页都可能漂移。这种情况下,先冻结写入或改用基于游标的导出,再谈完整性才有意义。具体工具是否支持游标导出、是否有单次上限,需要以你所用工具的当前文档为准,不要凭旧印象判断。
对需要反复退出的旧内容,建议每次导出后固定做三件事:记录本次使用的筛选条件与排序字段;记录导出条数与源总量的差值;保存首尾记录的唯一键。这样下次再出现遗漏分页时,你能立刻判断是条件变了、排序变了,还是源数据本身变了。完整性检查的价值不在于一次跑通,而在于让下一次的偏差可以被快速定位。