2

いくつかのCSVファイルがあり、それらをロードして列の値で行を検索する必要があります。誰かがOpenCSVプロジェクトを使用してCSVをロードすることを提案しています。しかし、これが最善の方法かどうかはわかりません。OpenCSVは検索/フィルターユーティリティを提供しますか?

私が必要なことをするためのより良い方法はありますか?

4

4 に答える 4

3

CSVファイルからMySQLやSQLiteなどのお気に入りのSQLエンジンにデータをロードし、SQLを使用して便利かつ高速にフィルタリングできます。これは一般的なタスクであるため、データベースはCSVファイルからデータをインポートするためのツールを使用する準備ができています。これはSQLiteで行う方法です:http ://www.sqlite.org/cvstrac/wiki?p = ImportingFiles

于 2012-12-11T10:33:43.123 に答える
0

組み込みデータベースを使用して、CSVを検索機能から分離します。

于 2012-12-11T10:34:03.820 に答える
0

Apache Commons CSVのようなものは、値の2次元文字列配列を提供するだけです。どんな解決策でもこれ以上のものが得られるとは思えません(CVSファイルにタイプ/スキーマ情報がない場合)。これらの結果に対する巧妙に作成されたループだけで十分だと思います。これが最も簡単最速になります(要求どおり)。

さらに多くのことを行いたい場合は、JVMで標準のJava提供のJavaDbデータベースを実行し、そのデータベースに結果をロードして、外部のデータソース/サービスなしでSQLクエリを実行できます。

かなり大きなCSVをロードする場合、メモリが問題になる可能性があることに注意してください。ただし、これらはどれくらいの大きさですか?最近のメモリはとても安いです。

于 2012-12-11T10:35:59.957 に答える
0

CSVファイルが大きすぎてメモリに保持できず、最初にすべてをデータベースに保存することに頼りたくない場合(これは、面倒なディスクからメモリ、ディスクへの操作になります)、誰も言及していないように見える別のアプローチがあります。ストリーミング。

このアプローチは、ファイルからいくつかの行を読み取り、それらを処理してから、検索に一致しない行を破棄することで構成されます。たとえば、ApachecommonsFileUtilsを使用してこれを行うことができます。これは、既存のCSV APIがこれを提供している可能性がありますが、私はそれを確認していません。

于 2012-12-11T13:41:25.747 に答える