CSVファイルを比較して差分を抽出する方法|ツール・コマンド・ノーコード
CSVファイルの比較は、商品マスタの更新確認、月次レポートの変動検出、Git管理下のデータ変更追跡など、日常的な業務で頻繁に発生します。2つのCSVを比較して差分を抽出するには、GUI ツール、コマンドラインツール、ノーコードツールなど複数の選択肢があり、用途や環境に応じて使い分けることが重要です。
本記事では、CSV差分比較の実務的な方法をツール別に解説し、主キーの設定から差分抽出までの全工程をカバーします。
注記: 第三者ツールの仕様は執筆時点(2026年4月)の情報です。最新の機能や制限は各ツールの公式サイトで確認してください。
CSV差分比較ツール一覧——GUI・CLI・エディタの3タイプ
CSV差分を比較するには、環境と用途に応じた3つのアプローチがあります。GUIツールは初心者向け、CLIツールはスクリプト化に向き、エディタ拡張は開発者向けです。
CSV比較ツール比較表
| ツール名 | タイプ | 対応OS | 主キー指定 | 差分出力 | 用途 |
|---|---|---|---|---|---|
| CSV比較名人 | GUI | Windows | 自動推測・手動設定 | Excel出力 | 初心者向け |
| WinMerge | GUI | Windows | 手動設定 | テキスト出力 | 汎用Diff |
| VS Code + 拡張機能 | エディタ | Windows/Mac/Linux | 手動設定 | 画面表示 | 開発者向け |
| csvdiff | CLI | Windows/Mac/Linux | 手動設定 | JSON・CSV出力 | 自動化向け |
| daff | CLI | Windows/Mac/Linux | 手動設定 | CSV出力 | Git連携向き |
CSV比較名人(Windows GUI・主キー自動推測)
CSV比較名人は、Windows 向けの GUI ツールで、最も使いやすい選択肢です。2つのCSVファイルを読み込むと、自動的に主キーの候補を推測し、その列を照合キーとして差分検出を行います。
差分は行ごとに「追加」「削除」「変更」に分類され、変更があった行の場合はセルレベルで変更内容がハイライトされます。結果は Excel ファイルとして出力でき、さらに詳細な分析が容易です。
例えば、商品マスタの前月版と当月版を比較する場合、CSV比較名人で SKU 列を主キーに設定すれば、価格変更、在庫増減、カテゴリ変更が一目瞭然になります。価格が変わった商品だけを抽出して営業チームに報告する使い方が典型的です。
WinMerge(汎用Diff・CSV表比較対応) / CDiff(CSV特化Diff)
WinMerge は、一般的なテキストファイルの差分表示に広く使われている無料ツールです。v2.16.7以降では、ネイティブでCSVの表形式比較に対応し、行ごとの差分を視覚的に表示し、2つのファイルを並べて比較できます。スクリプト言語での自動化にも対応しており、バージョン管理の結果確認などで重宝します。
CDiff は、WinMerge のプラグインではなく独立した別ツール(CSV専用の差分ツール)です。WinMerge とは異なり、CSV に特化した差分検出を行います。
ただし、主キーを自動推測しないため、事前に並び順を統一する必要があります。複数の列の組み合わせを主キーにしたい場合、前処理として CSV をソートする工程が入ります。
VS Code でCSVの差分を見る(拡張機能活用)
Visual Studio Code は、拡張機能を追加することで CSV ファイルの差分表示が可能になります。「Rainbow CSV」「CSV Viewer」「CSV Rainbow」などの拡張機能が実用的です。
VS Code 内で左右に 2 つのファイルを開き、差分機能(「Compare」コマンド)を実行すると、変更箇所がハイライトされます。開発ツールをすでに使っている場合は、追加ツール不要で対応できる点が利点です。
Git リポジトリにある CSV を追跡している開発チームなら、VS Code の Git 機能と組み合わせて、過去のコミットとの差分を確認することもできます。
csvdiff / daff(CLI・Git連携向き)
csvdiff と daff は、コマンドラインツールで、スクリプトや自動化パイプラインに組み込みやすい特性があります。
csvdiff は、2つの CSV を比較して、追加行、削除行、変更行を JSON、diff、rowmark など複数の形式で出力します。主キーの指定が柔軟で、複数列の組み合わせにも対応しています。
daff は「data diff」に由来するツールで、CSV 差分を特殊なマークアップ形式で出力します。行頭に「+」「-」「!」などの記号を付け、どの行がどう変わったかを明確に表示します。Git の追跡に適しており、プルリクエストレビューの際に変更内容が読みやすくなります。
差分だけを抽出してファイルに書き出す方法
実務では、差分そのものを新しいファイルとして保存し、別の分析や報告書作成に使う場面が多くあります。ツール・言語別に、実践的な方法を紹介します。
CSV比較名人で差分をExcel出力する
CSV比較名人で 2 つのファイルを比較した後、メニューから「結果をExcelに出力」を選択すると、差分内容が Excel ワークブックとして保存されます。シートが「追加」「削除」「変更」に自動分割されるため、その後の作業が効率的です。
変更シートには、照合前後の値が並んで表示されるため、どのセルがどの値から何に変わったかが即座に判明します。営業や経営層への報告資料としてそのまま使える粒度です。
csvdiff で追加・変更・削除を個別に抽出する
csvdiff をコマンドラインで実行すれば、結果を JSON や CSV で出力でき、さらなる加工が可能です。以下の例では、主キー列を id に指定して差分を抽出します。
csvdiff --key id before.csv after.csv > diff_result.csv
出力ファイルには、各行の diff タイプ(追加・削除・変更)が最初の列に記録されます。フィルタリングツール(grep など)で「追加」だけを抽出すれば、新規登録されたレコードを取得できます。
Pythonで2つのCSVを比較して差分CSVを生成する
pandas ライブラリを使えば、2つの CSV を読み込んで差分を抽出するスクリプトが数行で完成します。
import pandas as pd
# 2つのCSVを読み込む
before = pd.read_csv('before.csv')
after = pd.read_csv('after.csv')
# 主キー(例:id列)に基づいて結合
merged = before.merge(after, on='id', how='outer', indicator=True, suffixes=('_before', '_after'))
# 追加行を抽出(after にのみ存在)
added = merged[merged['_merge'] == 'right_only'].drop('_merge', axis=1)
# 削除行を抽出(before にのみ存在)
deleted = merged[merged['_merge'] == 'left_only'].drop('_merge', axis=1)
# 変更行を抽出(両方に存在)
changed = merged[merged['_merge'] == 'both'].drop('_merge', axis=1)
# 変更箇所をフィルタリング(実際に値が異なる行のみ)
changed_filtered = changed[
(changed['column1_before'] != changed['column1_after']) |
(changed['column2_before'] != changed['column2_after'])
]
# 結果をファイルに保存
added.to_csv('diff_added.csv', index=False)
deleted.to_csv('diff_deleted.csv', index=False)
changed_filtered.to_csv('diff_changed.csv', index=False)
この方法により、追加・削除・変更の 3 種類を個別の CSV に自動生成でき、さらに複雑な条件フィルタリング(例:特定列の変更のみ抽出)も容易になります。
Power Query で前月比・前回比の差分を抽出する
Excel の Power Query(データの取得と変換)を使って、2つの CSV ソースを読み込み、マージして差分を抽出することも可能です。Power Query は GUI で操作するため、SQL や Python の知識がなくても実行でき、結果を Excel テーブルとして直接使用できる点が強みです。
以下の手順で操作します。
| ステップ | 操作 |
|---|---|
| 1. データ取得 | Excel で「データ」>「新しいクエリ」>「ファイルから」>「CSV」を選択し、前月版の CSV を読み込む |
| 2. 2つ目のソース追加 | 同様に当月版の CSV を別のクエリとして読み込む |
| 3. マージ | 主キー列を指定して、2つのテーブルを結合(Inner Join または Full Outer Join) |
| 4. 差分列を追加 | 各列に対して「新しい列」を追加し、前月版と当月版の値を比較する条件式を入力 |
| 5. フィルタリング | 差分列で「変更あり」だけをフィルタ |
用途別——どのCSV比較手段を選ぶか
実務では、処理対象のデータサイズ、比較頻度、チーム内の技術レベルなどにより、最適な手段が異なります。以下の3つのユースケースを参考に、自分の環境に合ったツールを選びましょう。
| ユースケース | データサイズ | 比較頻度 | 推奨ツール | 理由 |
|---|---|---|---|---|
| EC商品マスタ確認 | 数百〜数千件 | 毎日/毎月 | csvdiff または CSV比較名人 | 自動化可能(csvdiff)、または初心者向け(CSV比較名人) |
| 月次レポート比較 | 数十〜数百件 | 毎月 | Power Query | 計算式を含めた差分値の抽出に最適 |
| Git管理下のCSV | 小〜中規模 | 継続的 | daff または VS Code | 人間が読みやすい形式で差分を記録できる |
ECの商品マスタ更新前後を照合する
EC プラットフォームの商品マスタは、日々更新され、何百・何千レコードを含むため、手作業での確認は現実的ではありません。CSV 差分 比較を自動化する必要があります。
SKU を主キーに、価格・在庫・説明文の変更を抽出するなら、csvdiff を cron ジョブに組み込むか、Python スクリプトで定期実行するのが一般的です。結果を JSON で出力して、さらに後工程システムに連携させることもできます。
毎月 1 回の定期確認程度なら、CSV 比較名人で十分です。Excel 出力された結果を営業チームと共有すれば、新規商品や廃止予定商品の検討も速やかになります。
月次レポートの前月比を出す
月次レポートでは、前月との売上・顧客数・取扱数の比較が常に求められます。これは CSV 差分ではなく、むしろ「差分値の計算」です。
前月ファイルと当月ファイルを Power Query で結合し、列ごとに「当月 - 前月」の計算式を入力すれば、前月比が瞬時に算出されます。さらに増減率の列も追加すれば、トレンドの可視化が容易です。
SQL や Python でも同じ処理は可能ですが、非技術者にとっては Power Query の方が修正や調整しやすく、組織全体での再現性が高まります。
Git管理下のCSVの変更履歴を追う
データエンジニアやシステム管理者が、Git リポジトリに CSV を保存して版管理している場合、daff や VS Code の差分機能が有力です。
daff で生成された差分形式は、Git のコミットメッセージと組み合わせると、「いつ」「誰が」「何を」変更したかが明確に記録されます。プルリクエスト上で daff 出力を表示すれば、レビュアーの負担が大幅に軽減されます。
CSV差分比較で押さえておく前提知識
CSV 差分比較を正しく実行するには、主キーの概念、行の並び順、文字エンコーディングなど、いくつかの前提条件を理解しておく必要があります。
主キー(照合キー)の考え方
主キーとは、各行を一意に識別する列です。CSV 差分では、主キーの値が同じ行同士を「同じレコード」として比較します。主キーを誤って設定すると、実際には同じレコードの変更が「削除+追加」として検出される誤判定が起きます。
以下は、マスタファイル別の主キー候補をまとめたものです。
- 顧客マスタ: 顧客ID
- 商品マスタ: SKU(Stock Keeping Unit)
- 支店売上データ: 支店ID + 商品ID + 日付(複合主キー)
- 取引記録: 取引ID、または 日付 + 店舗ID + レシート番号の組み合わせ
複合主キー(複数列の組み合わせ)もツール側の設定で複数列を指定すれば対応できます。
行の並び順が違う場合の対処
CSV の行の順序が異なる場合、主キーを指定しないツール(単純な行ごとの diff)では、すべての行が変更として検出されてしまい、正確な差分が得られません。対処法を以下にまとめます。
| 対処法 | メリット | デメリット |
|---|---|---|
| 事前にソートして並び順を統一 | シンプルなツールでも対応可 | 手作業が必要、スケールしない |
| 主キー対応ツールを使う(CSV比較名人、csvdiff、Power Query) | 自動マッチング、スケーラブル | ツールの学習が必要 |
後者の方が確実で、数百・数千行のデータでも処理負荷なく対応できます。
文字コード・改行コードの差異に注意
CSV は人間が簡単に作成・編集できるテキスト形式ですが、その反面、文字コード(UTF-8、Shift JIS、EUC-JP など)や改行コード(LF、CRLF)の違いで、同じ内容でも差分と誤検出されることがあります。
以下のツール・環境ごとに、文字コード・改行コードの確認・変更方法をまとめました。
- VS Code: 画面下部でファイルの文字コードを確認・変更できます。クリック一つで変換可能
- Python(pandas):
pandas.read_csv()でencodingパラメータを指定。例:encoding='utf-8'またはencoding='shift_jis' - コマンドライン:
iconvコマンドで文字コード変換、dos2unixで改行コード統一が可能
まとめ——まずは主キーを決めてから比較する
CSV 差分を正確に抽出するには、事前準備が不可欠です。具体的には、「比較対象の 2 つのファイルの主キーは何か」を最初に明確にし、その列を基準に照合を行うことが出発点になります。
一度の確認作業なら CSV 比較名人、毎月の定期処理なら Python + pandas、Git 連携なら daff、といったように、実務の頻度と技術環境に応じて選択すれば、効率的で正確な CSV 差分比較が実現します。