Review a CSV catalog refresh
审阅一份 CSV 目录更新
Two real OurAirports exports, one reviewable update packet.
两份真实的 OurAirports 导出,一份可核对的更新资料包。
OurAirports · 2026-10-05 → 2026-10-06
- Added / 新增
- 23
- Removed / 移除
- 0
- Changed / 修改
- 31
- Upserts / 写入候选
- 54
7.74 MB · 14 files · original inputs, recipe and outputs · no qsv executable
含原始输入、流程代码与结果;不含 qsv 可执行程序。
Archive SHA-256 / 压缩包校验值
d05f6b236cc217c42ff0912a093fb062e925bd4d3c11957b191795785a53a2f3Review before replacing a local catalog
If you maintain a local OurAirports catalog, this example shows how to prepare changes before a refresh. It is an assumed use case, not evidence of customer demand. Existing qsv commands perform the comparison; nothing runs in this page.
What you get
added.csv: 23 complete new records;removed.csv: header onlychanged.csv: 31 complete before/after pairs, marked-and+upserts.csv: 54 complete candidate rows for a separately reviewed update process- 85 source references, input/output hashes, actual commands and independent verification
Baseline: 86,185 records. Candidate: 86,208. All candidate records reconstruct from the baseline and packet with exact parsed-cell equality. Independent fresh-download and cached reruns reproduced all five CSV outputs byte-for-byte. Original CSV quoting and row order are not part of that guarantee.
Run the fixed example locally
Extract the archive and read README.md. Linux x86_64 and Python 3.10+ are required; Python 3.12.14 was tested. The first command fetches the official hash-pinned qsvlite 23.0.1 release. It does not install system packages or change PATH.
python3 fetch.py
python3 recipe.py --output reproduced-packet
python3 verify.py reproduced-packet
The complete inputs are included. A new output directory is required; the prepared packet is never overwritten. To inspect the prepared packet without downloading qsv, run python3 verify.py packet. Import CSV columns as text if using a spreadsheet; avoid automatic formula or missing-value interpretation.
The policy that matters
Match by persistent id, map the same 19 columns by name, and compare every cell as exact text. Preserve empty strings, Unicode and literal NA. Ignore row order. Reject unexpected schema, invalid or duplicate ids, wrong hashes and failed reconstruction. No trimming, type coercion or silent category repair.
For record 5252, upstream changed type from closed to small_airport and added “(Old)” to its name. This does not prove the airport reopened. The dictionary currently lists closed_airport, while these exports use closed; this recipe preserves the exported value.
Added and removed mean source-record presence. This real pair contains no removal or ident change. No examples were manufactured to fill those gaps. No database is updated, and no runway/frequency synchronization or aviation-navigation claim is made.
替换本地目录前,先核对变化
如果你维护本地 OurAirports 目录,这个实作展示如何在更新前整理差异。这是明确假设的使用场景,不代表已有客户需求。比较由现有 qsv 命令完成;网页本身不运行工具。
资料包包含什么
added.csv:23 条完整新增记录;removed.csv:只有表头changed.csv:31 组完整新旧记录,以-、+标记upserts.csv:54 条完整候选记录,可供另行审核的更新流程使用- 85 条来源定位、输入与输出校验值、实际执行命令及独立校验结果
旧版有 86,185 条,新版有 86,208 条。用旧版与资料包可逐单元格重建全部新版记录;独立的全新下载与缓存复跑均得到字节一致的五份 CSV 输出。该保证针对解析后的数据,不要求保留原文件的引号写法或行序。
在本地复现实作
解压后先阅读 README.md。需要 Linux x86_64 和 Python 3.10+;已实测 Python 3.12.14。第一条命令下载并校验锁定版本的官方 qsvlite 23.0.1,不安装系统包、不修改 PATH。
python3 fetch.py
python3 recipe.py --output reproduced-packet
python3 verify.py reproduced-packet
两份完整输入已随包提供。复跑须使用新的输出目录,不覆盖现成资料包。若只想核对现成结果,无须下载 qsv,运行 python3 verify.py packet 即可。用表格软件查看时,请将各列按文本导入,避免自动解释公式或缺失值。
明确的核对规则
按持久的 id 匹配,以相同的 19 个列名一一映射,逐格精确比较文本。保留空字符串、Unicode 和字面值 NA,忽略行序。列结构异常、无效或重复 id、校验值不符、重建失败都会中止;不裁剪空白、不转换类型、不悄悄修正分类。
上游把记录 5252 的 type 从 closed 改为 small_airport,并在名称中加入“(Old)”。这不能证明机场重新开放。当前词典列的是 closed_airport,而这两份导出使用 closed;流程原样保留导出值。
新增、移除只描述记录是否存在。这对真实输入没有移除或 ident 变化,也未为补齐案例而制造记录。流程不修改数据库、不联动跑道或频率数据,不能用于航空导航判断。
Sources / 来源
OurAirports releases these exports to the public domain with no accuracy or fitness warranty.
OurAirports 将这些导出置于公有领域,不保证准确性或适用性。
- Official downloads and terms / 官方下载与条款 · Data dictionary / 数据词典
- Baseline CSV / 旧版输入 · commit
660b39168c35e6f74f8c63836cbff0268b19c5a9 - Candidate CSV / 新版输入 · commit
bc63f66786d68f639111c99711b4a3d0c0685a90 - Official qsv 23.0.1 release / 官方锁定版本