CSV差異比較
比較兩個CSV檔案,即時檢視新增的行、刪除的行以及發生變化的單元格。可指定任意列作為行的識別鍵進行匹配,並列顯示變更前後的值,即使兩個CSV的列結構不同也能比較。所有處理均在瀏覽器內完成。
使用提示
- 預設使用第1列作為識別行的鍵列,但如果資料中有ID或主鍵列,建議改用該列——即使行的順序或數量發生變化,也能正確匹配對應的行。
- 如果兩個CSV都沒有表頭行,請取消勾選"將首行作為表頭",系統會自動使用col1、col2……這樣的序號列名進行比較。
- "發生變化的行"部分會逐列比較鍵值相同的行,並僅列出存在差異的列,以"變更前→變更後"的形式展示。
- TSV(製表符分隔)檔案同樣支援,只需將分隔符切換為"製表符",直接貼上資料即可。
- 除了上傳檔案,也可以直接貼上從Excel或電子表格中複製的區域,比較效果相同。
常見問題
常用於比較匯出的主資料在更新前後的差異,或驗證系統遷移前後資料的一致性。即使CSV行數很多,也能立即提取出新增、刪除、變更的行,比逐行肉眼核對能節省大量時間。
可以。行的匹配是基於所選"鍵列"的值進行的,因此即使兩個檔案中行的順序不同,只要鍵值相同的行仍會被正確地對應比較。如果同一個鍵值出現多次,則以後出現的行為準。
可以。比較是基於由兩個表頭合併而成的列列表進行的,因此即使列的順序不同,也能按列名正確對應。僅存在於一方的列,在計算差異時會將另一方的值視為空。
不會。所有比較處理都完全在瀏覽器內的JavaScript中完成,輸入或上傳的CSV內容不會被發送到任何伺服器,即使是包含敏感資訊的資料也可以放心使用。
會的。單元格的值是按字串嚴格比較的,因此大小寫的差異,以及前後多餘的空格,都會被判定為"存在變更"。如果希望忽略這類格式差異,建議提前統一資料格式。
閒話 ― 為什麼僅靠文本diff不足以比較CSV檔案
比較兩個CSV檔案,傳統做法通常是在Excel中並排肉眼核對兩個工作表,或使用Git等工具進行基於行的文本diff。但由於CSV的每一行都用逗號並排包含多個值,基於行的diff只能告訴你"這一行變了",卻無法一眼看出具體是哪一列發生了變化。本工具之所以按單元格級別定位變更之處,正是為了彌補這一缺陷。
在企業系統領域,將資料庫表匯出為CSV進行比較——通常稱為"資料核對"——是一項常見工作。在確認遷移前後資料是否完全一致,或核實月度批處理結果是否符合預期時,涉及的行數往往達到數千甚至數萬行。在這種規模下,按鍵列進行機械化核對就變得不可或缺。
Git等版本控制系統所使用的diff演算法(如Myers差異演算法)擅長檢測行級別的新增與刪除,但對於CSV這種"同一行只有部分列的值發生變化"的資料,未必是最合適的方案。本工具採用的先按鍵匹配行、再逐列比較單元格的方式,是專為表格型資料差異檢測而設計的方法。