← 返回工具指南
工具指南CSV 对比CSV diff主键数据版本重复数据数据核对表格差异

两份 CSV 怎么对比差异?主键、重复冲突与字段变化检查指南

讲清 CSV 两版本对比为什么必须先选主键,如何识别新增、删除、修改、重复键冲突和字段结构漂移,以及怎样避免空格与大小写造成假差异。

打开配套工具 →

供应商更新报价、仓库重发库存、平台导出订单后,常见任务不是“把两张表放在一起看”,而是回答四个问题:哪些记录新增了、哪些删除了、哪些字段改变了、哪些完全没变。只按行号对比通常不可靠,因为新版本插入一行后,后面的行都会错位。

可以使用 CSV 两版本差异对比工具 在浏览器本地选择旧表、新表和一个或多个主键,生成新增、删除、修改、未变与冲突清单。工具不会把重复主键静默取第一条,也会提示只存在于某一版本的字段。

为什么必须先确定业务主键

主键是能唯一识别一条业务记录的字段。商品表常用 SKU,订单表可能要用“订单号 + 行项目号”,广告报表可能要用“日期 + 广告活动 ID + 关键词 ID”。名称、标题、备注和金额通常会变化或重复,不适合单独做主键。

例如订单 SO-1001 有三个 SKU。如果只用订单号,旧表和新表都出现三条同键记录,无法判断哪一行对应哪一行;选择“订单号 + SKU”后,组合值才可能唯一。工具会把重复键标成冲突,要求先清理,而不是猜测配对关系。

空主键同样危险。两张表中各有十条空 SKU,并不代表它们是同一批商品。空键应先补全、从比较范围排除,或使用另一个稳定标识。冲突数量不是“有几行不同”,而是有多少个键无法安全比较。

新增、删除、修改和未变怎样判断

对每个唯一主键,工具按下面的规则分类:

“删除”只表示记录没有出现在新文件中,不一定代表业务对象真的被删除。新表可能只是不同日期范围、站点或状态的局部导出。比较前应确认两份文件采用相同筛选条件和快照时间。

忽略字段适合每次导出都会变化、但不属于业务差异的值,例如 exported_at、随机批次号或系统更新时间。不要为了让报告更干净而忽略价格、库存、状态等真正需要核对的字段。

空格、大小写和格式差异怎么处理

来自不同系统的数据可能出现 A-001a-001activeactive 。主键去首尾空格通常比较安全,因为复制和导出容易带入空白;主键忽略大小写则必须结合业务规则。如果 SKU 明确区分大小写,开启后会错误合并两个商品。

比较值的归一化应更谨慎。USus 可能语义相同,但产品标题、密码摘要或代码字段的大小写可能有意义。数字格式也不会自动统一:1,200.001200 作为文本并不相同。需要数值级比较时,应先清洗格式或把字段导入数据库后按类型比较。

RFC 4180 说明了常见 CSV 的引号、字段和记录规则。字段里可以包含逗号和换行,双引号需要转义。对比前如果解析器提示未闭合引号或列数不一致,应先修复源文件;否则后续“字段变化”可能只是解析错位。

字段结构漂移为什么要单独看

如果新表新增 Supplier,旧表没有这个字段,它属于 schema drift,也就是字段结构变化。工具会提示只在旧表或新表出现的字段,但不会把新字段自动算成每一行都修改。否则新增一列就会让全表变红,掩盖真正的业务变化。

字段改名也会表现为“旧字段消失 + 新字段出现”。例如 price 改成 unit_price 时,应先确认只是改名还是口径也改变了,再决定是否统一表头后重新比较。不要仅凭相似名称自动映射。

一份可复核的版本差异报告应包含什么

导出的报告至少应保留状态、主键、变化字段、旧值和新值。正式交付前建议:

  1. 先解决全部冲突,再看新增和删除数量。
  2. 对新增、删除各抽查几条,确认两份文件范围一致。
  3. 对价格、库存等关键字段设置合理的异常阈值,避免只看“是否不同”。
  4. 记录主键、忽略字段和归一化选项,让同事能够复现结果。
  5. 保留两份原文件及生成时间,不要只保存差异报告。

当数据达到数十万行、需要模糊匹配、多对多关联或数值容差时,浏览器工具不再是最佳选择。应使用数据库、数据仓库或脚本,把主键唯一约束、字段类型和审计日志纳入流程。