CSV差分比較

2つのCSVファイルを比較し、追加された行・削除された行・変更されたセルを一目で確認できます。任意の列を行の識別キーに指定して行を照合し、変更前後の値を並べて表示。列構成が異なるCSV同士でも比較でき、データ処理はすべてブラウザ内で完結します。

CSV差分比較とは

CSV差分比較は、2つのCSV(またはTSV)データを列単位・行単位で突き合わせ、「追加された行」「削除された行」「値が変わったセル」を自動で洗い出すツールです。テキストエディタの行比較(Gitのdiff等)は1行まるごとの追加・削除しか判定できませんが、本ツールは行を識別キー(IDや主キーに相当する列)で対応付けたうえでセル単位まで比較するため、同じ行の中で「どの列の値だけが変わったのか」まで特定できます。

入力したCSVはブラウザ内のJavaScriptだけで処理され、サーバーへは一切送信されません。会員データや売上データなど、外部に出したくない情報を含むCSVでも安心して比較できます。列の並び順や列数が異なる2つのCSVでも、見出し名を基準に自動で対応付けて比較する点も特徴です。

CSV差分比較の使い方

  1. 比較元(A)と比較先(B)のCSVを用意する 左側の欄に更新前のCSV、右側の欄に更新後のCSVを直接貼り付けるか、「ファイルを選択」からCSV/TSVファイルをアップロードします。
  2. 区切り文字を選ぶ カンマ区切りのCSVかタブ区切りのTSVかに応じて、「区切り文字」をカンマまたはタブに設定します。
  3. 見出し行の有無を指定する 1行目が列名の見出しであれば「先頭行を見出しとする」にチェックを入れます。見出しがない場合はチェックを外すと col1・col2…という連番の列名が自動的に割り当てられます。
  4. キー列を選択する 行を識別する列(IDや主キーに相当する列)をプルダウンから選びます。この列の値をもとにAとBの行が対応付けられます。
  5. 差分結果を確認する 「削除された行」「追加された行」「変更された行」が自動的に一覧表示されます。変更された行はセルごとに変更前・変更後の値が並びます。

使いこなすためのヒント

  • 「行を識別するキー列」は既定で1列目が選ばれますが、IDや主キーに相当する列がある場合はそちらを選ぶと、行の並び替えや追加・削除があっても正しく対応行を照合できます。
  • 見出し行がないCSV同士を比較する場合は「先頭行を見出しとする」のチェックを外してください。col1・col2…という連番の列名で自動的に比較されます。
  • 「変更された行」のセクションでは、キーが一致する行同士で列ごとに値を比較し、異なる列だけを「変更前→変更後」の形で一覧表示します。
  • TSV(タブ区切り)ファイルも区切り文字を「タブ」に切り替えるだけでそのまま比較できます。
  • ファイルをアップロードする代わりに、Excelやスプレッドシートからコピーした範囲をそのまま貼り付けても比較できます。

CSV差分比較の活用シーン

マスタデータ更新前後の確認

商品マスタや顧客マスタをCSVでエクスポートし、更新作業の前後で内容を比較することで、意図しない変更が紛れ込んでいないかをチェックできます。

システム移行時のデータ突合

旧システムと新システムからそれぞれ出力したCSVを比較し、移行によってデータが欠落・重複していないかを確認する「データ突合」作業に使えます。

バッチ処理結果の検証

日次・月次バッチの実行前後でテーブルをCSV出力し、想定通りの行だけが追加・更新されているかを検証する用途に向いています。

スプレッドシートの変更履歴チェック

Excelやスプレッドシートからコピーした表を貼り付けて比較すれば、共同編集で誰かが変更した箇所を素早く洗い出せます。

API・スクレイピング結果の差分監視

APIから定期取得したデータをCSV化して日ごとに比較すれば、価格や在庫数など特定の値がいつ変化したかを追跡できます。

CSV差分比較の用語集

キー列
行を一意に識別するために使う列のことです。IDや主キーに相当する列を指定すると、行の並び順が変わっても対応する行同士を正しく照合できます。
見出し行(ヘッダー行)
CSVの1行目に配置される、各列の名前を示す行のことです。「先頭行を見出しとする」を有効にすると、この行は差分の対象から除外され、列名として扱われます。
区切り文字(デリミタ)
CSVでは各セルの値を区切るために使われる記号のことです。標準はカンマですが、タブ区切りのTSVも同じ仕組みで比較できます。
合成列一覧
比較元(A)と比較先(B)の見出しをまとめた列名の一覧です。Aの列順を基準に、Bにしかない列を末尾に追加して作成されます。片方にしか存在しない列は、もう片方の値を空欄として比較します。
変更セル
同じキーを持つ行同士で、列ごとに値を比較した結果、値が異なっていたセルのことです。変更前(A)と変更後(B)の値が並べて表示されます。
未変更行
比較元・比較先の両方に存在し、かつすべての列の値が完全に一致した行のことです。差分の一覧には表示されず、件数のみがサマリーに表示されます。

よくある質問

エクスポートしたマスタデータの更新前後を比較したり、システム移行前後のデータ整合性を確認したりする場面でよく使われます。行数が多いCSVでも、追加・削除・変更された行だけを抽出して確認できるため、目視での差分確認より大幅に時間を短縮できます。

はい。行の照合には「行を識別するキー列」の値を使うため、行の並び順が異なっていても、キーの値が一致する行同士を正しく比較できます。ただし同じキー値が重複している場合は、後に出現した行の値が優先されます。

はい。比較元・比較先の見出しを合成した列一覧を基準に比較するため、列の並びが異なっていても列名で正しく対応付けられます。片方にしか存在しない列は、もう片方の値を空欄として扱い差分に表示します。

いいえ。比較処理はすべてブラウザ内のJavaScriptで完結し、入力・アップロードしたCSVの内容がサーバーに送信されることはありません。機密情報を含むデータでも安心してご利用いただけます。

はい。セルの値は文字列として厳密に比較されるため、大文字・小文字の違いや前後の余分な空白も「変更あり」として検出されます。表記ゆれを無視したい場合は、事前にデータ側の表記を統一しておくことをおすすめします。
ツールくん

余談ですが ― CSVの差分検出がテキストdiffだけでは足りない理由

CSVファイル同士の差分を確認する作業は、Excelで2つのシートを並べて目視比較したり、Gitのdiffコマンドで行単位のテキスト差分を見たりする方法が伝統的でした。しかしCSVは1行の中に複数の値がカンマで並ぶ構造を持つため、行単位のテキスト差分では「その行のどの列が変わったのか」まではひと目でわかりません。本ツールがセル単位で変更箇所を特定するのは、この弱点を補うためです。

業務システムの世界では、データベースのテーブルをCSVでエクスポートして比較する「データ突合」という作業が頻繁に発生します。移行前後のデータが完全に一致しているか、月次バッチ処理の結果が想定通りかを確認する際、対象の行数が数千〜数万行に及ぶことも珍しくありません。こうした規模になると、キー列を指定して機械的に突合するアプローチが不可欠になります。

Gitのようなバージョン管理システムのdiffアルゴリズム(Myers差分法など)は行単位の追加・削除を検出するのが得意ですが、CSVのように「同じ行でも一部の列の値だけが変わる」データには必ずしも最適ではありません。行をキーで対応付けてからセル単位で比較する本ツールの方式は、表形式データの差分検出に特化したアプローチだと言えます。