自动导出遗漏分页时,先别急着重跑任务。更可靠的做法是保留原始导出文件,用“分页计数—去重计数—边界抽样”三步核对,确认缺失发生在抓取、合并还是保存环节,再决定补抓、改写脚本还是退出自动流程。
分页遗漏通常有三类可区分原因。第一类是抓取层:请求只拿到了第一页或前几页,后续页没有进入临时文件。第二类是合并层:各页都抓到了,但合并时被去重规则误删,或字段映射错位。第三类是保存层:合并结果完整,导出时因超时、覆盖或编码问题丢了一部分。
验证方法很直接:打开临时目录,统计每页原始文件的数量和行数,再与合并文件的行数对照。如果原始文件本身就少页,问题在抓取层;如果原始文件页数齐全而合并后行数明显减少,问题在合并层;如果合并文件行数与最终导出文件不一致,问题在保存层。这个判断会直接决定下一步动作,抓取层要改请求节奏或翻页条件,合并层要检查去重键,保存层要改导出方式。
两种做法都成立,但适用条件不同。
保留原始分页文件适合以下情况:自动导出已经跑了一段时间,原始文件还在,且你能确认缺失集中在某几页。此时保留原文件的价值在于可以做差集比对——把原始页文件去重后得到集合A,把最终导出文件去重后得到集合B,A减B就是丢失的行。代价是需要额外的存储和一次比对脚本,但能避免重复抓取带来的时间消耗和被限制风险。
直接重跑适合以下情况:原始临时文件已被覆盖或清理,或者你无法确定缺失范围。重跑前必须改一个条件,否则很可能再次遗漏。常见改法是降低单次请求量、增加页间等待、把翻页终止条件从“某页为空”改为“连续两页无新主键”。代价是总耗时上升,且如果目标站点对频率敏感,重跑仍可能在中途被截断。
如果两种条件都不满足,例如原始文件没了、重跑又被限制,那就应该退出自动导出,改为手动分批导出并逐批记录页码范围。这不是失败,而是当前约束下的合理取舍。
全量逐行核对成本太高,实际可操作的是边界抽样。具体动作是:取第一页、最后一页、以及中间任意两页,分别检查三件事——页内主键是否连续、页与页之间主键是否有重叠、最后一页是否以完整记录结尾而不是半行截断。
假设一个短例子:某次导出共12页,每页约100条。你抽查第1、6、11、12页,发现第11页最后一条与第12页第一条主键相同,说明翻页边界有重叠,去重后总数会少于页数乘以每页条数,这属于正常去重而非遗漏。但如果第12页只有37条且最后一条字段不完整,那更可能是抓取被中断,而不是数据本身只有这些。这个结果会告诉你:前者不需要补抓,后者需要从第12页重新抓取。
建议按以下顺序执行,每一步的结果决定是否进入下一步:
这套顺序的核心是:先定位层级,再决定保留、改写还是退出,最后才动手补数据。跳过定位直接重跑,往往会把同一个遗漏原因再复制一遍。具体工具的分页上限、导出格式和字段命名需要以你当前使用的版本为准,不同工具之间不能直接套用同一套页码假设。