「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 大きな CSV ファイルを比較 #eg38

大きな CSV ファイルを比較 #eg38

2024 年 11 月 8 日に公開
ブラウズ:895

ここに同じ構造の 2 つの CSV ファイル (A と B) があります。どちらも KEY_A、KEY_B、KEY_C を主キーとして使用し、これら 2 つは異なるレコードを持ちます。

Compare large csv files #eg38
Java を使用して 2 つのファイルを 3 つの方法で比較し、結果をそれぞれ新しい csv ファイルに書き込みます。 1. 主キーが等しく、他のフィールドの値が等しくないレコードを検索し、それらの主キーを出力してから、A の他のフィールドと B の他のフィールドを出力します。 以下は予想される結果です:

Compare large csv files #eg38

  1. 主キーに基づいて、A と B の違い、つまり A には存在するが B には存在しないレコードを検索します。以下は予想される結果です:

Compare large csv files #eg38

  1. 主キーに基づいて B と A の違いを見つけます。以下は予想される結果です:

Compare large csv files #eg38
3 つの比較を行うための SPL コードを作成します。以下は最初の比較です:

Compare large csv files #eg38

Compare large csv files #eg38

Compare large csv files #eg38
T() 関数は CSV ファイルを解析するか、CSV ファイルにデータを書き込みます。 @c オプションを使用すると、カーソルを使用して、メモリに収まらないデータをファイルから取得できるようになります。 sortx() 関数は、カーソル内のデータをソートします。 joinx() 関数はマージ結合を実行します。 merge() 関数はレコードをマージします。 @d オプションを使用すると、相違点を見つけることができます。

SPL を Java アプリケーションに統合する方法については、「Java で SPL スクリプトを呼び出す方法」を参照してください。

これは StackOverflow の問題の 1 つです。これをクリックすると、従来のソリューションは非常に複雑ですが、SPL アプローチは非常にシンプルで効率的であることがわかります。

SPL オープンソース アドレス

リリースステートメント この記事は次の場所に転載されています: https://dev.to/esproc_spl/compare-large-csv-files-eg38-29m8?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3