先给有条件的结论:如果导出任务每次都能稳定产出同一套分页标识,并且你能在导出后立即用“总数—已导出数—重复数”三项对账,那么自动导出遗漏分页的风险通常可控。但如果分页标识会随内容更新而漂移,或者导出中途失败后只重试了失败页而没有重跑边界页,这个结论就不成立——你看到的“完整”可能只是恰好没暴露缺口。
检查完整性的第一步不是数条数,而是确认这次导出用的分页依据是什么。常见依据有三类:按页码递增、按时间或ID游标、按上次导出的最大值续跑。页码递增最怕中间页被删除或内容重排;游标最怕边界值重复或跳过;续跑最怕上次记录的最大值本身来自一次不完整的导出。
一个可执行的动作是:在导出结果中抽出首、中、尾各一页的标识,与源端当前状态比对。如果首尾标识一致、中间页存在,说明分页骨架没有明显错位,下一步才值得做数量对账。反之,如果中间某页标识在源端已不存在,就要先判断是内容被删除还是分页规则变了,再决定是否重新导出整段。
总数对不上不一定代表遗漏,总数对得上也不代表完整。更可靠的做法是同时记录三个值:源端报告的总条数、导出文件去重后的条数、导出过程中被标记为重复或跳过的条数。假设源端总数为1000,导出后去重为998,重复跳过为3,那么998+3=1001,多出的1条说明有边界页被重复计入,需要回查边界;如果998+0=998,缺口2条则指向遗漏。
这个例子的数字只用于说明比较方法,不代表任何工具的真实表现。关键在于:重复和遗漏往往同时发生,只盯一个方向会误判。
自动导出最危险的场景是中途失败后只补跑失败页。分页任务在失败点前后通常存在重叠或跳页逻辑,只补失败页会让边界页既可能重复又可能缺失。实际操作中,应把失败点前一页和后一页一并纳入重跑范围,再对重跑结果做去重。这个动作的结果会直接影响下一步:如果重跑后三项对账闭合,可以继续;如果不闭合,说明分页规则本身不稳定,应改为按稳定主键分段导出,而不是继续依赖自动分页。
一个明确的反例是:源端在导出期间持续有新内容写入,且分页按更新时间排序。此时你导出时的“总数”和导出结束时的“总数”已经不同,任何对账都会出现无法归因的差额。这不是遗漏,而是快照不一致。遇到这种情况,完整性检查的前提是先把源端冻结或改用不随更新漂移的主键范围,否则检查结论没有意义。
另一个失效条件是分页标识本身由工具动态生成且不可复现。如果两次导出同一范围得到不同的分页边界,那么“遗漏”可能只是边界漂移的假象。此时应先固定导出参数并复现两次,确认边界一致后再判断是否真的遗漏。
完成上述检查后,根据结果选择动作:三项对账闭合且边界可复现,可以保留当前自动导出方式,但要在每次导出后自动跑一次对账;对账不闭合但缺口集中在边界,改为按主键分段并记录每段首尾标识;分页标识不可复现,放弃按页导出,改用稳定主键范围导出。这个选择直接影响后续维护成本——前一种只需监控,后两种需要改造导出逻辑。
最后提醒一点:请求量、抓取量或导出条数突然归零,不能单独证明处理正确。它可能是源端限流、任务未启动或权限变更,需要结合对账结果和日志一起判断,再决定是否重跑或调整策略。