先给结论:如果旧工具已经打不开,但手里还留着它导出的文件,最稳妥的做法不是继续找能打开它的软件,而是先把字段名、字段顺序、字段类型和样本值抄成一份不依赖该工具的说明表,再决定哪些字段还能用。下面用一个假设情境把决策过程走完。
假设你手里有一份多年前从某个百度快照查看工具导出的 CSV,字段包括 snapshot_time、page_title、cache_url、http_status、content_hash。现在原工具已经无法运行,CSV 还能用文本编辑器打开,但字段名全是缩写,没人说得清 content_hash 到底是对正文做的摘要,还是对整页 HTML 做的摘要。这时要做的第一件事,是判断这份文件属于哪种情况。
第一类前提:文件里保留了表头、字段顺序和至少一行完整样本,且你能找到同一次导出的日志或说明文档。这类情况下,字段含义可以从数据形态反推:snapshot_time 是时间格式,cache_url 是 URL 格式,content_hash 是固定长度十六进制串。反推出来的含义虽然不如原始文档精确,但足以支撑后续核查。
第二类前提:文件只剩数据行,表头被删掉,或字段名被工具改写过,且没有任何同期文档。这类情况下不能靠猜。一个十六进制串既可能是正文摘要,也可能是整页摘要,两者对后续比对结果影响完全不同。此时应把该字段标为“含义未确认”,而不是先写进正式说明表。
两类前提的分界点只有一个:是否存在能独立于旧工具存在的字段说明来源。有,就进入反推;没有,就进入隔离标记。
确认可以反推之后,按下面的顺序做,每一步都有明确产出:
做完这一步的直接结果是:即使旧工具永远打不开,字段含义也不再依赖它。下一步的比对、迁移或废弃决策,都以这份说明表为准。
说明表完成后,按字段分别决策,而不是整份文件一起处理。
snapshot_time 和 cache_url 通常属于这一类。http_status 如果无法确认是抓取时状态还是导出时状态,就不宜作为正式判断依据。content_hash 如果无法确认摘要范围,用它判断页面是否变化就可能得出错误结论。这个分档的意义在于:它把“文件能不能打开”这个技术问题,转换成了“字段能不能支撑决策”的业务问题。技术问题无解时,业务问题仍然可以有解。
假设说明表显示 content_hash 置信度为低,而 page_title 置信度为高。那么下一步动作是:用 page_title 加 snapshot_time 做一次粗筛,找出标题发生过变化的记录;对这批记录再人工打开对应 URL 核对,而不是直接用 content_hash 判断变化。这个动作的结果是筛出的候选记录数会变多,但每条结论都有可核对的依据。如果粗筛后候选量仍然可控,就继续人工核对;如果候选量过大,就说明这份导出文件不适合承担当前核查任务,应转为重新采集。
最后要确认的是:保存字段含义这件事,产出的不是一段记忆,而是三样能独立存在的东西——只读副本、字段说明表、以及一份写清“哪些字段已弃用、为什么弃用”的记录。第三样最容易被忽略,但它在后续有人重新拿到这份文件时,能直接阻止重复猜测。只要这三样齐全,旧工具能否再打开,就不再是决定这份数据还有没有用的前提。