Excel形式のファイルから大量のデータ(たとえば、10,000行と200列)を入力する必要があるWebアプリケーションがあります。次に、このデータを処理してから、データベースに挿入/更新/削除する必要があります。
すべてをJavaコードアプリに入れてこれを試してみましたが、遅すぎることがわかりました。
誰かがこれへのより良い方法を提案できますか?このデータを一部のクラスまたはオブジェクトに入れていないことに注意してください。私はちょうどdbを処理して更新しています。
Excel形式のファイルから大量のデータ(たとえば、10,000行と200列)を入力する必要があるWebアプリケーションがあります。次に、このデータを処理してから、データベースに挿入/更新/削除する必要があります。
すべてをJavaコードアプリに入れてこれを試してみましたが、遅すぎることがわかりました。
誰かがこれへのより良い方法を提案できますか?このデータを一部のクラスまたはオブジェクトに入れていないことに注意してください。私はちょうどdbを処理して更新しています。
ストリーミング技術を使用することをお勧めします。Apache Commons FileUpload を使用します: http://commons.apache.org/fileupload/streaming.html
次に、レコードを 1 つずつ処理します。この方法では、メモリを割り当てません。考慮事項: プロセスが途中で中断した場合はどうなりますか? これが重要な場合は、トランザクションを使用してください。残念ながら、XLS 形式の読み取りに関するヒントを提供することはできませんが、CSV を実行できれば、物事はより簡単になります。そのためのライブラリはほとんどありません。
FileUpload を微調整して、メモリ、ディスク、またはその組み合わせにデータを保存することも、正しいことを行うと信頼することもできます。
アプリケーションで何が行われているのかが明確ではありません: ユーザー入力 (アップロード) を操作しているのか、それともアプリケーションを初期化しているだけなのか? 後者であれば、データの更新はリクエスト フェーズではなく、アプリケーションのマウント時に 1 回で済みます。前者の場合、多くの要因に依存します: データをどのように読み取るか? ファイル IO は非常に遅くなる可能性があります。どのようにデータベースを更新しますか? - ストアド プロシージャを使用しますか? または単純な JDBC SQL 句です。プロセス全体を完了するには遅すぎると思われる場合は、ある種のバックグラウンド スレッドの方がよいでしょう。