如何比较两份 CSV,忽略行顺序和更新时间

两次导出之间,行顺序、更新时间和数值格式可能都变了。本文用三套模拟数据,演示如何按主键找出真正需要核对的变化。无需安装软件,文件在浏览器内处理。

更新:2026-10-07 · 约 5 分钟

为什么逐行 diff 容易误导

文本 diff 比较的是行的位置和字符串。记录重排后,同一个商品可能显示为删除再新增。按 sku+region 匹配,才能比较同一地区的同一商品。不要只选 SKU:示例中同一个 SKU 出现在两个地区。

操作步骤

  1. 下载下方一组旧、新 CSV,在在线工具中分别选择。价格表示例也可以在首页一键体验。
  2. 按案例设置主键列;然后选择忽略列、数值列,绝对容差保持 0。
  3. 点击“比较”,核对数量及具体字段。筛选“所有行”可查看未变记录。
  4. 导出 HTML 报告,离线打开,核对报告中的设置与结果。

1. 价格表审核

下载旧 CSV · 下载新 CSV

  • 主键: sku + region
  • 忽略列: updated_at
  • 数值列: price
  • 绝对容差: 0
新增移除修改未变
1122

美国键盘 79→74,欧洲键盘 89→94;新增 P-005 摄像头,移除 P-003 显示器。P-004 的 9.99 与 9.990 在数值模式下相等。移除仅表示记录不在新文件中,不证明商品已下架。

价格表变化示意图

2. 数据库导出核对

下载旧 CSV · 下载新 CSV

  • 主键: id
  • 忽略列: exported_at
  • 数值列: balance
  • 绝对容差: 0
新增移除修改未变
1112

002 的状态 pending→active;新增 005,移除 003。004 的 7 与 7.0 数值相等。ID 保持字符串匹配,包括前导零。这只核对这些 CSV 字段,不证明数据库迁移整体正确。

3. 配置表更新

下载旧 CSV · 下载新 CSV

  • 主键: service + environment
  • 忽略列: updated_at
  • 数值列: timeout_seconds, retries
  • 绝对容差: 0
新增移除修改未变
1121

api+production 的超时 30→45;api+staging 的 enabled 从 true→false;新增 scheduler+production,移除 legacy+production。布尔字段按字符串精确比较;示例不会修改运行中的服务。

遇到数量不一致时

试一组你熟悉的数据

先用模拟或脱敏数据确认规则。如果结果不符合预期,请在 GitHub 描述主键、设置和预期结果。如果节省了核对时间,欢迎收藏项目。

打开工具 · GitHub