メモリに保持され、Java Readerから読み込んだCSVテキストに対してSQLクエリを実行する方法はありますか? StringReader。H2データベースでは、Java Readerから読み込んだCSVテキストでSQLクエリを実行できます。 StringReader?
org.h2.tools.Csv.read(Reader reader、String [] colNames)を使用すると、すべての行と列を含む結果セットを取得できます。しかし、私は実際にリーダーから読み取ったCSVテキストのクエリを実行したいと考えています。
バックグラウンド - 各エンティティの複数のCSVセクションを含むファイルを受け取ります(Can H2 Database query a CSV file containing multiple sections of different record groups?を参照)。ファイルの解析中に必要なCSVセクションをそれぞれString(各1つのString)に保存します。これは、短時間の間だけデータをメモリに保持し、各CSVセクションは比較的小さいので、メモリを駄目にしてはいけません。これらのCSVセクションでクエリを実行して、ドキュメントをカスタム形式でビルドする必要があります。
各CSVセクションをファイル(ファイルのセットとして)に書き込んでCSVREADを使用することはできますが、できるだけ速く、セクションを分割して書き込むためにはアプリケーションを必要としませんディスクにはハードドライブをスラッシュして死に至らしめる。
ああ - あなたが何を意味するのか分かります。だから、H2データベースに追加するのは便利な機能かもしれません.CSVREAD(filename csvcontent)のような組み込み関数CSVREADを含めることですが、CSVファイルの名前を渡す代わりに、実際のCSVコンテンツを含む文字列に変換します。もちろん、これはCSVデータが比較的小さい場合にのみ役立ちます。 – nicciglen