先看导出任务自身的日志:如果日志显示“成功”但记录数明显少于页面可见总数,最可能的原因是分页游标在中途失效,而不是数据真的被删了。此时不要重新导出全量,而是先做一次抽样比对,确认缺失是集中在某几页还是随机散布。这个判断会决定下一步是用“补页导出”还是“换游标方式重跑”。
自动导出遗漏分页,常见两种成立条件不同的解释。
解释一:分页游标失效。当工具按时间戳或自增ID翻页,而导出期间源数据仍在写入,游标可能跳过或重复某些页。典型证据是缺失记录集中在某个时间窗口,且该窗口与导出任务的执行时段重叠。
解释二:导出范围被截断。工具本身设置了单次导出的最大页数或最大记录数,超出部分被静默丢弃。典型证据是每次导出都在同一页数或同一记录数附近停止,与数据写入时间无关。
两者的区别不在于“少了多少”,而在于缺失分布是否与导出执行时间相关。如果缺失页恰好落在任务运行的后半段,更支持游标失效;如果缺失页总是最后几页,更支持范围截断。
不需要全量核对,取三个样本页即可:第一页、中间某页、最后一页。对每页记录做唯一标识比对,记录以下信息:
如果中间页缺失但首尾完整,且缺失页的处理时间集中在任务后半段,游标失效的可能性更大。如果最后一页整体缺失且导出文件的总记录数等于某个整数上限,范围截断的可能性更大。
这里有一个假设例子:某次导出任务日志显示处理了120页,但源列表实际有150页,导出文件只有115页的记录。检查发现缺失的5页分布在任务运行的第40分钟到第55分钟之间,而这段时间源数据有批量写入。这个证据组合指向游标失效,而不是范围截断,因为缺失不是集中在末尾。
无论哪种解释,先执行一个动作:用同一导出条件,但把时间范围缩小到缺失页对应的时间窗口,单独导出一次。
如果补页导出能拿到完整记录,说明原任务的游标在跨窗口时失效,后续导出应改为按时间分片执行,而不是一次跑全量。如果补页导出仍然缺失相同记录,说明问题不在游标,而在导出范围或权限,需要检查工具的单次导出上限设置或数据可见范围。
这个动作的结果直接决定下一步:补页成功则保留原导出文件并追加缺失部分;补页失败则放弃补页,改用分片重跑或调整导出范围。不要在没有做这个区分之前就重新导出全量,那只会重复同样的遗漏。
记录总数相等不代表分页完整。如果游标失效导致跳过一页又重复另一页,总数可能恰好接近。因此完整性检查至少要包含两项:唯一标识去重后的数量,以及首尾页的时间戳是否覆盖了预期范围。
如果工具提供导出日志中的分页游标值,直接比对源列表和导出文件的游标序列更可靠。游标序列出现跳跃或回退,就是分页不完整的直接证据,不需要再依赖总数推断。
确认原因后,调整下一次导出的配置。游标失效对应的调整是缩小单次导出的时间跨度,或改为按固定ID区间分片。范围截断对应的调整是降低单次导出的页数上限,或分批导出后合并。
调整后不需要立即验证全量,只需重复上面的三页抽样比对。如果抽样页的游标序列连续且唯一标识无跳跃,说明当前配置下分页完整性已经恢复。此时再决定是否需要用新配置重跑历史缺失部分,还是只补当前缺口。
整个检查过程的关键不是找到一个“完整”的导出文件,而是确认缺失的分布特征,并用一次补页导出区分游标问题和范围问题。这个区分做对了,后续的补数或重跑才有明确方向。