Command Palette

Search for a command to run...

CSV 差分: 差分があなたにない 2 つの CSV ファイルを比較します

CSV 差分: 差分があなたにない 2 つの CSV ファイルを比較します

T
Toolz Team
|Aug 23, 2026|17 分読んでください

差分と比較 コレクションの一部

これをビルドさせたバグ報告は3 語長かった: " the sync is droping rows." A client's product feed came in as a nightly CSV, my Laravel importorter rewrote it, and somewhere between the two files a handful of SKUs were vanishing.私の最初の本能は明白だった:両方のファイルをライン差分へ投げ込む.差分は赤一色で戻ってきた.1 行ごとに" changed, " というのはその夜エクスポートが別の列によって再ソートされていたから,古いファイルの4 行目は新しいファイルの900 行目だった.ライン差分は技術的に正しくて全く役に立たなかった.実際に必要だったのはファイルがテーブルであることを理解し,各行をSKUによって対応するものにマッチさせ,どのレコードが真正に追加,削除,編集されたかを教えてくれるツールだった.そのツールはToolzである. CSV差分チェッカー、そしてこのガイドがその背後にある理由です。

tl;dr: CSV差分は、2 つのCSVファイルをテキスト行ではなく構造化データとして比較します。 などのキー列で行を一致させます idemail そして、各レコードはファイル内で移動した場所であればどこでも対応するレコードと比較されるため、再ソートされたエクスポートでは何千もの誤った変更が報告されません。 Toolz ツールは両方のファイルを RFC 4180 ステート マシンで解析し、結果を追加、削除、変更された行に分割し、変更された行ごとに異なる正確なセルを示します。これは完全にクライアント側で実行されます。アップロードなし、サインアップなし、オフラインで動作します。

私はLaravelとReactでSaaS製品をビルドし、私は輸出を調整するために多くの時間を費やすことを意味するWordPressプラグインを出荷:1 つのシステム& #39; sビューのデータに対する別の& #39; s, 昨夜& #39; sスナップショットに対する今夜& #39; s, クライアントは、彼らが実際に到着したファイルに対して送信誓うファイル. CSVは、そのすべてのための共通語であり、2 つのCSVを正しく比較することは、あなたが間違ったツールでそれをしようとするまで些細なように見えるそれらのタスクの1 つであるガイドです私は私の欲求不満のバージョンを読んでいたらよかったです。

CSV差分チェッカーとは何ですか?

CSV diff チェッカーは、オリジナルと変更されたバージョンの 2 つの CSV ファイルを受け取り、行とセルのレベルで 2 番目の行が最初の行とどのように異なるかを報告します。 text diff の追加行と削除行出力の代わりに、新しいファイルにのみ存在する行 (追加)、古いファイルにのみ存在する行 (削除)、両方に存在するが値が異なる行 (変更)、および同一である行 (変更なし) の 4 つのバケットを取得します。変更された行ごとに、優れたツールは 1 レベル深くなり、移動した特定の列に名前を付け、新しい行の横に古い値を表示します。

全体を機能させる区別は、2 つのファイル全体で行がどのようにペアリングされるかです。 CSV 差分はキー列によって一致し、値を のように扱うことができます id それか、 email レコードのアイデンティティとして、またはそれは位置によって一致することができます, 行1 行1 を比較する キーマッチングは、あなたが輸出を比較しているほとんど毎回欲しいものです, なぜなら、同じレコードは、データが引っ張られるたびに異なる行に着地することができますので、位置マッチングは、行番号自体が意味のある安定したファイル用です, これまでに追加されるだけ番号付き台帳のように.右モードを選択することは、単一の最も重要な決定です, それはToolzツールは、推測ではなく、前面と中央を置く理由です。

再ソートされたエクスポートで行差分が完全に赤くなるのはなぜですか?

これはCSV特有のツールを探している人を 送る失敗ですから 正確に理解する価値があります テキスト差分 Gitやあらゆるコードエディタに 組み込まれている種類で ファイルを1行1行 順番に比較します 最も長い行の共通部分列を見つけ それ以外の全てを挿入または削除した 印にするアルゴリズムを実行します これはまさにソースコードに対して正しいことです 行の順序がファイルの意味である 関数を移動すると 純粋にファイルを変更したことになります。

CSVエクスポートはその逆です 行の順序は通常、何であれ事故です ORDER BY クエリはたまたま使用していて、同一のデータを含む2 つの実行の間で変更できます。 sort順序がシフトした瞬間、行差分は新しい位置にあるほぼすべての行を見て、それらを並べ替えることに失敗し、変更されたファイル全体を報告します。 3つのレコードが実際に変更したあなたが望んでいた情報は、何千もの誤検知の下に埋もれています。 diffは忠実に仕事をしました; レコードに関する質問があったときに、行に関する質問に答えただけです。

CSV差分は、まずファイルを行と列に解析し、次にレコードを行番号ではなくキーで比較することでこれを修正します。 SKUであるため、ファイルの再ソートは効果がありません A-1007 は SKU で行と比較されます A-1007 どちらかがどこに座っていても、もう一方のファイルでは。 それがカテゴリが存在する理由のすべてであり、それが私がカテゴリに到達する理由です CSV差分ツール 代わりに git diff ファイルがコードではなくデータであるときはいつでも。

RFC 4180 はファイルの比較とどのような関係がありますか?

すべて、最初に正しく解析できない場合は、2 つのCSVを正しく比較できないからです CSVは、誰かが標準化する前に数十年間使用されていました 2005 年にIETFが公開しました RFC 4180、これは、共通の形式と を記述します text/csv MIME タイプ。これはすべてのツールが従う法則ではありませんが、共有契約に最も近い法則であり、素朴な比較が間違うルールを定義します。

最も重要なルールは引用です フィールドは二重引用符で包まれているかもしれません コンマや二重引用符や改行が含まれている場合でしょう 引用フィールド内の二重引用符は2 倍にすることでエスケープされます ですから値は "Doe, John" は単体であり、かつ "She said ""hi""" は 値 She said "hi"。 カンマ上の各行を分割する比較はカットされます "Doe, John" 2 つのフィールドに分かれ、列の後のすべての列をシフトし、行が変更されていないときに行が変更されたことを自信を持って報告します。 Toolz diff は、に電力を供給する同じ RFC 4180 ステート マシンを実行します CSV ビューア:テキストを文字ごとに歩き、引用フィールドの中にあるかどうかを追跡し、引用符の外側にあるときだけカンマか改行を区切り文字として扱う。 parse を正しく行うことは diff を正しく行うための前提条件であり、手書きスクリプトがほとんどの場合スキップする部分です。

ツールで2 つのCSVファイルを比較するにはどうすればよいですか?

フローが意図的に短いです。元のファイルを最初のボックスに貼り付け、変更されたファイルを 2 番目のボックスに貼り付けるか、「サンプルの読み込み」をクリックして、1 つの行が編集され、1 つが追加され、1 つが削除される作業例を表示します。

区切り文字を確認します。 「自動検出」は、各行が最初の数行を同じ数の列にどの程度一貫して分割するかによって、カンマ、セミコロン、タブ、パイプのスコアを自動検出します。これにより、ヨーロッパのセミコロン ファイルとタブ区切りのエクスポートが正しく処理されます。データの検出が間違っている場合は、手動で設定します。各ファイルの最初の行に列名が保持されている場合は、ヘッダー スイッチをオンにしておきます。これがキー列セレクターにフィードされます。

ここで、行のマッチング方法を選択します。 pick a key column from the dropdown, usually an idemail、または SKU、ツールはレコードをその値で比較します。 「位置」を選択して代わりに行ごとに比較します。 「比較を洗練する」の 2 つのトグルで、「大文字と小文字を区別しないマッチングをオンにする if」をオンにします Active あんど active は同じ値としてカウントし、trim-whitespace をオンにしておくと、迷子の先頭スペースが変更として登録されないようにする必要があります。 「比較」をクリックすると、概要に 4 つのカウントが一目で表示されます。 「変更」タブを開いて編集された各行を展開し、どのセルが移動したかを正確に確認するか、「追加および削除」タブを開いて行全体を表として確認します。完了したら、「レポートをコピー」または「ダウンロード」は、変更された各セルの前後の値を含むすべての違いの平文概要をエクスポートし、プル リクエスト、チケット、またはクライアントへの電子メールに貼り付ける準備が整います。

キーと位置で一致させるのはいつですか?

これは、差分が有用かノイズかを決定する選択であるため、使用するルールを表として示します。

状況 によるマッチ なんでや
再ソート可能なデータベースまたは API エクスポート キー列 同じレコードは、それぞれプルする異なる行に着地します; キーはその安定したアイデンティティです
2 つのシステムの調整'同じレコードのビュー キー列 レコードがどこにあるかではなく、両側に存在し、一致するかどうかを気にします
昨夜と#39;sのスナップショットを今夜と#39;sと比較します キー列 行は時間の経過とともに追加および削除されるため、行番号はドリフトします
順序が固定された追加専用のログまたは台帳 位置 行番号は安定しており、意味があります;行 N は純粋に "n 番目のイベント " です
知っている2 つのファイルは、まったく同じ行順を共有します 位置 キーは存在しませんが、順序は同一であることが保証されています
一意の列がまったくないファイル 位置 キーを付けるものは何もないので、順番に比較して制限を受け入れます

短いバージョン: reach for key matching by default, because most CSVs are exports of records that carry an identifier.位置照合に戻るのは、使用可能なキーがない場合、または行の順序が真にデータの一部である場合のみです。キーを選択し、ツールが列に重複した値が含まれていると警告した場合、それは列が実際には一意ではない信号であり、より良いキーを選択するか、ソースをクリーンアップする必要があります。 "unique" ID 列が正しくないことが判明したため、私は 2 つ以上の壊れたエクスポートをキャッチしました。

実際に何が連続して変化したのかはどのように示されるのでしょうか?

A count of "5 rows changed" is a start, but the question you really have is "changed how?" The Toolz diff answers that per row.一致したレコードが異なる場合、2 つのバージョンを列ごとに比較し、移動したセルのみをリストし、それぞれが新しい値の横に前の値として表示されます。 のみの顧客行 plan からコラムが流れた free にする pro レコード全体ではなく単一セルであるため、変更された 1 つのフィールドを見つけようとして 2 つの長い列に目を向けているわけではないと報告しています。

このセルレベルのビューは、CSV差分がスプレッドシート& #39; 独自の比較機能上でそのキーを獲得する場所です, これは、色でセルを強調表示する傾向がありますが、コピーしたりレビューに貼り付けるために何も与えませんエクスポートされたレポートは、テキストでそれぞれ変更を綴ります: 行のキー, 列名, 新旧の値 実際には、私はまっすぐにプルリクエストの説明に貼り付けます レビュアーは、ファイル自体を開くことなく、移行のデータへの影響を確認できるように構造の後ろに同じ本能です JSON 差分、どの報告変更キーではなく、それらのパスでノイズの多い行の変更; " 何変更" &quotより良い質問ですので、両方のツールが存在します; どの行が異なります."

機密性の高いCSVファイルをオンラインで比較するのは安全ですか?

このツールの場合、はい、その理由は小指の約束ではなくアーキテクチャです。すべてのステップで、両方のファイルを解析し、行を照合し、セルごとの差を計算し、レポートを構築することは、独自のブラウザ タブ内で JavaScript として実行されます。アップロードもサーバー往復も行われず、ログも保存もされません。browser's ネットワーク タブを開いて「比較」をクリックすると、それを証明できます。リクエストがページを離れることはありません。ページがロードされると、インターネットから完全に切断でき、ページは動作し続けます。

CSVs people diff は企業が所有する最も機密性の高いファイルの一つであるため、これは重要です 顧客リスト、トランザクションエクスポート、給与計算行、在庫テーブル、アクセスログはすべてCSVとして移動します ファイルをサーバーにアップロードする比較ツールは、どんなに善意であっても、2 つのプライベートスプレッドシートを他の誰かに変えます& #39; s ログエントリ クライアント側の処理は質問を削除します: データは起動したマシンから離れることはありません そのデフォルトは、 Toolz.dev 上のすべてのツールにわたって意図的であり、長い引数を に書き出しました オンラインツール向けデータプライバシーガイド 完全な推論が必要な方へ.

CSV差分は実際のワークフローにどのように適合しますか?

the diff is rarely the whole job; it is one station in a pipeline.私が最も頻繁にヒットするパターンは検証です: 私はインポートまたは移行を実行し、その後、スクリプトが私が期待したことを正確に実行し、それ以上のことをしなかったことを確認するためにエクスポートの前後にdiff " three changed, zero removed" のクリーンな差分は、それを実行したスクリプトからの緑色のチェックマークよりも移行が機能したはるかに良い兆候です。 diff が意図していない削除を示したとき、私はそれが後ではなく本番環境に達する前にバグをキャッチしました。

その周りのツールは、そのファイルが何のためにあるかによって異なります。比較する前に、ファイルを並べ替え可能なグリッドとして観察する必要がある場合は、 CSV ビューア 同じ RFC 4180 をテーブルとして解析します。 membership について本当に必要な比較が、どの行が変更されたかではなく、一方のファイルにはどの値が表示され、もう一方のファイルには表示されない場合、 2 つのリストを比較ツール は単一の列に算術を設定し、より適切に適合します。そして、データが API が消費できるものになる必要がある場合、 CSVからJSONへのコンバーター は次のホップです. これらのどれもデータをアップロードしないので,考え直さずに同じプライベートファイルにチェーンできます.もしあなたがこの種のデータ作業のためのキットを組み立てているなら,私の Web 開発者ツールキット ガイド 駒がどのように接続されるかを説明します。

よくある質問

2 つのCSVファイルを比較するにはどうすればよいですか? を開きます CSV差分チェッカー、最初のボックスに元のCSVを貼り付け、2 番目のボックスに変更されたCSVを貼り付け、区切り文字とヘッダーの設定を確認し、キー列または位置の一致を選択し、比較をクリックします。結果は追加、削除、変更された行に分割され、変更された各行には異なる正確なセルが表示されます。すべてがブラウザで実行されるため、ファイルがアップロードされることはありません。

キーマッチングと位置マッチングの違いは何ですか? キーマッチングは、選択した列で同じ値を共有する行をペアにします idと言うわけで、レコードは、いずれかのファイルに表示されている場所であればどこでも、対応するレコードと比較されます。 position matching は、行 1 を行 1 にファイル順で比較します。 re-sorted できるエクスポートには key matching を、append-only log のような固定順序ファイルには position matching を使います。

データがほとんど移動していないときに、テキストの差分がすべての行を変更どおりに表示するのはなぜですか? なぜなら、テキスト差分はファイルを行単位で順番に比較するからです。 export が再ソートされると、ほとんどすべての行が新しい位置に着地し、diff は、基礎となるレコードが同じであっても、ファイル全体を変更済みとしてマークします。 CSV diff はファイルを行と列に解析し、キーでレコードを比較するため、再ソートは効果がなく、本物の変更のみが報告されます。

どの特定のセルが連続して変化したかを示しますか? はい。 matched 行が異なる場合、ツールは変更された各列を名前でリストし、新しい値の横に前の値を表示します。 status 列のみがアクティブからクローズドに移動した行は、行全体にフラグを立てるのではなく、その単一のセルを報告します。

どの区切り文字をサポートしていますか? カンマ、セミコロン、タブ、パイプ。最初の数行にわたって一貫した列数を生成する区切り文字を選択することで、区切り文字が最初のファイルから自動検出され、データの検出が間違っている場合は手動で上書きできます。

キー列の値が重複している場合はどうなりますか? ツールは、キー列に重複が含まれ、各キーの最初の行のみを比較することを警告します。重複キーは通常、列が真の一意の識別子ではないことを意味するため、警告は、差分を信頼する前に別のキーを選択するか、データをクリーンアップするプロンプトです。

CSVファイルはどこにでもアップロードされていますか? いいえ すべての解析と比較は、プレーンなJavaScriptを使用してブラウザでローカルに実行されます 何も送信、ログ、または保存されず、要求が表示されないネットワークタブで確認できます また、ツールは、ページがロードされるとオフラインで動作し続けます。

どのくらいの大きさのファイルを処理できますか? キーマッチングは入れ子ループではなくハッシュマップを使うので、大まかに直線的にスケーリングし、何万行も快適に処理します。 実用的な限界は、比較そのものではなく、ブラウザが非常に大きな結果セットをレンダリングすることです。

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!