ホームページ  >  記事  >  Java  >  大きな CSV ファイルを比較 #eg38

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

PHPz
PHPzオリジナル
2024-09-10 16:31:02951ブラウズ

ここに同じ構造の 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 オープンソース アドレス

以上が大きな CSV ファイルを比較 #eg38の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。