打开原始文件和更新后的文件,选择能标识一行的列(例如订单号或 SKU),差异会立即显示:只在更新后文件中出现的行为新增,只在原始文件中出现的行为删除,两边都有但值不同的行为修改,并显示每个值修改前后的内容。行在文件中的位置变化不算修改。结果可以下载为 CSV 报告,每个修改的单元格占一行。两个文件都在你的浏览器中对比,不会上传。
如何对比两个 CSV 文件
- 在第一个位置打开原始文件,在第二个位置打开更新后的文件。每个位置都有自己的导入设置(分隔符、表头和编码),所以分号分隔的导出也能与逗号分隔的文件对比。
- 选择按关键列匹配,并从两个文件共有的列中勾选一个或多个关键列。如果没有哪一列是唯一的,可以组合多列,例如
order_id和line。 - 按需设置比较选项,查看摘要和差异列表(可以只看新增、删除或修改),然后下载差异报告。
如果文件没有 ID 列,并且确定行的顺序相同,可以改为按行位置匹配:第 1 行与第 1 行比较,依此类推。但这样只要插入一行,后面的每一行都会显示为修改,所以只要有关键列,就请按关键列匹配。
比较选项
| 忽略大小写 | Desk Lamp 与 desk lamp 视为相等。对关键列和值都有效。 |
|---|---|
| 忽略多余空格 | 比较前去除两端的空格,并把值内任意连续的空格、制表符或换行视为一个空格。对关键列同样有效。 |
| 数值容差 | 当两个值都是数字时,只要相差不超过这个数(例如 0.01)就视为相等。计算采用精确的十进制运算,而不是浮点运算;容差为 0 时,45.0 和 45.00 视为同一个数。只有使用小数点、不带千分位分隔符的写法才算数字:1,000 仍是文本,而 1e3 会读作 1000。设置容差后,007 也会等于 7,因为两者都按数字读取。留空则按文本精确比较。 |
| 忽略的列 | 完全不参与比较的列,例如 updated_at,或每次导出都会变化的时间戳。 |
只在一个文件中存在的列会列在摘要中,不参与比较。如果它们其实是改了名的同一列,请先用 重命名和调整 CSV 列顺序 改成相同的列名。
重复和空白的关键值
一个关键值应当只对应一行。如果不是这样,工具也不会隐瞒:摘要会统计重复的关键值并给出第一个,具有相同关键值的行按出现顺序配对。原始文件中第一个关键值为 1 的行与更新后文件中第一个关键值为 1 的行比较,第二个与第二个比较,任一边多出的行报告为删除或新增。
这种配对方式可能会把两个相同关键值的行互换位置报告为修改。如果摘要提到有重复的关键值,请继续添加关键列,直到每种组合都唯一。所有关键列都为空的行会单独统计,因为它们通常来自空行或损坏的导出。
如何阅读结果和报告
摘要给出新增、删除、修改和未变的行数,以及修改的单元格总数。列表先按原始文件的顺序显示差异,再列出只在更新后文件中存在的行。每一项都显示关键值以及在两个文件中的行号(不含表头,数据行从 1 开始计数)。页面上列出前 500 处差异;报告包含全部差异。
change | added(新增)、removed(删除)或 changed(修改)。 |
|---|---|
| 关键列 | 关键值。开启忽略大小写或忽略多余空格时,关键值按比较时的形式显示,即转为小写或去除空格后的样子。按位置匹配时,只有一个 row 列,记录行号。 |
original_row、updated_row | 两个文件中的数据行号;某一边不存在该行时为空。 |
column、original_value、updated_value | 每个修改的单元格占一行。新增和删除的行各占一行,这几列为空。 |
报告是以更新后文件命名的 UTF-8 CSV,例如 feb-changes.csv。可以在 CSV 在线查看 中打开,对这些变化排序或搜索。
为什么某些行显示为新增、删除或修改
- 每一行都显示为既新增又删除。两个文件中关键值的写法不同,例如
00123对123,或末尾多了空格。请开启忽略多余空格,或在 清洗 CSV 数据 中修正该列。关键值始终按文本比较,所以前导零一定会影响匹配。 - 相等的数字显示为修改。
45.00和45.0是不同的文本;填入0或0.005这样的容差,即可按数字比较。使用逗号小数或千分位分隔符的数字始终按文本比较。 - 列表中找不到某个关键列。只有两个文件都有的列才能作为关键列,而且名称必须完全相同。如果整个表头都挤进了一列,请检查导入设置。
- 从某一行开始,后面每一行都显示为修改。你在按位置匹配,而中间插入或删除了一行。请改为按关键列匹配。
对比的限制与隐私
每个文件最大 25 MB、10 万行、250 列和 200 万个单元格。对比不采用流式处理:两个文件都保存在内存中,修改选项时差异会实时更新。
文件在你的浏览器中对比,不会发送到任何服务器。如果想把两个版本合在一起,请使用 合并或关联 CSV 文件;要按规则检查单个文件,请使用 CSV 校验。
示例:按 SKU 对比两份商品列表
两份以 sku 为关键列的商品清单,使用默认的精确比较设置。两份文件的行顺序不同,但这不影响结果。如果开启忽略大小写和忽略多余空格,并把容差设为 0.001,就只剩下 00456 的 stock 变化。
jan.csv (original) sku,name,price,stock 00123,Desk lamp,19.90,4 00456,Shelf,45.00,2 00789,Stool,12.00,9 feb.csv (updated) sku,name,price,stock 00456,Shelf,45.0,0 00123,Desk Lamp ,19.90,4 01010,Bench,80.00,1
change,sku,original_row,updated_row,column,original_value,updated_value changed,00123,1,2,name,Desk lamp,"Desk Lamp " changed,00456,2,1,price,45.00,45.0 changed,00456,2,1,stock,2,0 removed,00789,3,,,, added,01010,,3,,,
常见问题
行的顺序有影响吗?
按关键列匹配时没有影响:无论行在文件中的什么位置,都能按关键值找到。只有按行位置匹配时,顺序才有影响。
哪个文件应该作为原始文件?
较旧的那个。只在第二个文件中出现的行报告为新增,只在第一个文件中出现的行报告为删除,所以交换两个文件,这两份列表以及修改前后的值也会互换。
能对比名称不同的列吗?
只有两个文件中表头相同的列才会被比较,而且每个关键列在两个文件中都必须使用相同的名称。请先用 重命名和调整 CSV 列顺序 修改其中一个文件的列名。