CSV差異比較
比較兩個CSV檔案,即時檢視新增的行、刪除的行以及發生變化的單元格。可指定任意列作為行的識別鍵進行匹配,並列顯示變更前後的值,即使兩個CSV的列結構不同也能比較。所有處理均在瀏覽器內完成。
什麼是CSV差異比較
CSV差異比較是一款以列(欄位)和行為單位,自動核對兩份CSV(或TSV)資料,找出「新增的行」「被刪除的行」以及「數值有變動的儲存格」的工具。文字編輯器常見的逐行比對(例如Git的diff功能)只能判斷整行是否新增或刪除,而本工具會先依識別鍵(相當於ID或主鍵的欄位)將兩邊的行配對起來,再逐一比較每個儲存格,因此能精確標示出同一行當中「究竟是哪一欄的值改變了」。
輸入的CSV完全在瀏覽器內以JavaScript處理,不會傳送到任何伺服器。因此像是會員資料或銷售資料等不希望外流的內容,也能安心拿來比較。此外,即使兩份CSV的欄位順序或欄位數量不同,本工具也會依表頭名稱自動對應後再進行比較,這也是它的一大特色。
CSV差異比較的使用方式
- 準備比較源(A)與比較目標(B)的CSV 在左側欄位貼上更新前的CSV,右側欄位貼上更新後的CSV,或是點選「載入檔案」上傳CSV/TSV檔案。
- 選擇分隔符 依資料格式將「分隔符」設定為逗號(CSV)或製表符(TSV)。
- 指定是否有表頭行 若第一行是欄位名稱,請勾選「將首行作為表頭」;若沒有表頭,取消勾選後系統會自動以col1、col2……的序號作為欄位名稱。
- 選擇鍵列 從下拉選單中選出用來識別每一行的欄位(相當於ID或主鍵)。A、B兩邊的行會依此欄位的值進行配對。
- 確認差異結果 「被刪除的行」「新增的行」「發生變化的行」會自動列出。發生變化的行會逐一儲存格並列顯示變更前後的值。
用好本工具的小技巧
- 預設使用第1列作為識別行的鍵列,但如果資料中有ID或主鍵列,建議改用該列——即使行的順序或數量發生變化,也能正確匹配對應的行。
- 如果兩個CSV都沒有表頭行,請取消勾選"將首行作為表頭",系統會自動使用col1、col2……這樣的序號列名進行比較。
- "發生變化的行"部分會逐列比較鍵值相同的行,並僅列出存在差異的列,以"變更前→變更後"的形式展示。
- TSV(製表符分隔)檔案同樣支援,只需將分隔符切換為"製表符",直接貼上資料即可。
- 除了上傳檔案,也可以直接貼上從Excel或電子表格中複製的區域,比較效果相同。
CSV差異比較的應用場景
主資料更新前後的核對
將商品主資料或客戶主資料匯出成CSV,比較更新作業前後的內容,可以檢查是否混入了非預期的變動。
系統遷移時的資料核對
比較新舊系統各自匯出的CSV,確認遷移過程中資料是否有缺漏或重複,適合用於資料核對作業。
批次處理結果的驗證
在日批次或月批次執行前後將資料表匯出成CSV,可用來驗證是否只有預期的行被新增或更新。
試算表變更紀錄的檢查
貼上從Excel或試算表複製的表格內容進行比較,能快速找出多人協作編輯時他人變更過的地方。
API或爬蟲結果的差異監控
將定期從API取得的資料轉成CSV並逐日比較,可以追蹤價格或庫存數量等特定數值何時發生變化。
CSV差異比較用語集
- 鍵列
- 用來唯一識別每一行的欄位,通常指定為ID或主鍵所在的欄位。即使行的排列順序改變,指定鍵列後仍能正確配對出對應的行。
- 表頭行
- CSV第一行用來標示各欄位名稱的行。啟用「將首行作為表頭」後,這一行會被排除在差異比較之外,改為當作欄位名稱使用。
- 分隔符
- CSV中用來區隔各儲存格數值的符號。標準做法是使用逗號,但以製表符分隔的TSV也能用相同機制進行比較。
- 合併欄位清單
- 將比較源(A)與比較目標(B)的表頭整合而成的欄位名稱清單。以A的欄位順序為基準,再把B獨有的欄位加到最後。只存在於其中一方的欄位,比較時另一方會視為空值。
- 變更儲存格
- 鍵值相同的兩行之間,逐欄比較後數值不一致的儲存格。畫面上會並列顯示變更前(A)與變更後(B)的數值。
- 未變化的行
- 同時存在於比較源與比較目標,且所有欄位的數值都完全一致的行。這類行不會列在差異清單中,只會計入摘要的件數統計。
常見問題
閒話 ― 為什麼僅靠文本diff不足以比較CSV檔案
比較兩個CSV檔案,傳統做法通常是在Excel中並排肉眼核對兩個工作表,或使用Git等工具進行基於行的文本diff。但由於CSV的每一行都用逗號並排包含多個值,基於行的diff只能告訴你"這一行變了",卻無法一眼看出具體是哪一列發生了變化。本工具之所以按單元格級別定位變更之處,正是為了彌補這一缺陷。
在企業系統領域,將資料庫表匯出為CSV進行比較——通常稱為"資料核對"——是一項常見工作。在確認遷移前後資料是否完全一致,或核實月度批處理結果是否符合預期時,涉及的行數往往達到數千甚至數萬行。在這種規模下,按鍵列進行機械化核對就變得不可或缺。
Git等版本控制系統所使用的diff演算法(如Myers差異演算法)擅長檢測行級別的新增與刪除,但對於CSV這種"同一行只有部分列的值發生變化"的資料,未必是最合適的方案。本工具採用的先按鍵匹配行、再逐列比較單元格的方式,是專為表格型資料差異檢測而設計的方法。