自动导出遗漏分页,先别急着补导。更稳妥的判断是:把“分页没被触发”和“分页被触发但结果被覆盖”分开验证。前者要检查导出范围与分页条件,后者要检查写入方式和唯一标识。只有先确定属于哪一类,后续补数才不会重复或继续漏。
假设一次导出显示总记录数为 5000,但明细文件只有 4800 行,同时最后一批时间戳集中在某个区间。这个现象至少有两种解释。
这两种解释对应完全不同的处理动作。若误判为第一种,可能反复调整分页参数却始终不齐;若误判为第二种,可能不断补导却制造重复。
要区分解释,不能只看最终行数,而要看中间过程留下的痕迹。以下三个证据按优先级排列。
一个可执行动作是:先取一小段已知完整的数据范围,用相同分页逻辑导出,再与源端逐条比对。如果小范围也漏,问题在分页条件;如果小范围完整、大范围才漏,问题更可能在写入或并发覆盖。这个结果直接决定下一步是改分页参数还是改写入方式。
确认遗漏后,常见两种做法:按时间范围整体重导,或只补缺失的分页区间。它们成立的条件不同。
如果无法确认写入是否覆盖,优先选择整体重导到新文件或新表,再与旧结果比对。这样即使旧结果不完整,也不会污染新结果。
分页完整性不只取决于页码,还取决于排序键是否唯一。用非唯一字段排序时,同一值跨页会重复或丢失。用唯一标识排序时,边界条件应写成“大于上一页最后一个标识”,而不是“大于等于”,否则会重复。具体采用哪种,取决于导出接口是否支持稳定排序。
另外,导出期间源数据仍在变化时,分页快照可能不一致。此时即使分页逻辑正确,结果也可能看起来缺记录。要区分这一点,可以记录导出开始和结束时间,并检查缺失记录是否集中在导出窗口内新增或修改的数据。若如此,问题不在分页,而在快照隔离。
最后,检查完整性不是一次动作。每次调整分页键或写入方式后,都应用同一小范围样本复验,确认断点消失再扩大范围。这样能把问题定位在可复现的最小单元里,而不是在完整导出后才发现仍然遗漏。