0

私は.csvファイルからデータベースに膨大な量のデータをインポートするJavaプロジェクトに取り組んでいます。これを達成するための最良のアプローチを理解することに興味があります。

  • 間違いなくオプションの 1 つは、ストアド プロシージャを呼び出す Java アプリケーションを使用することです。
  • 私が考えることができる2番目のオプションは、私たちはすでに春を使用しているので、春とjdbcのペアも私たちを助けることができるということです.
  • 現在、アプリケーション レベルでこれを行うために、Spring-Hibernate ペアを使用しています (これは正しいアプローチではないと思います)。

スペクトルの反対側からの考えを教えてください。

4

2 に答える 2

0

最適なオプションは、巨大なデータで一括操作を行う際に、DB のネイティブ サポートを使用することです。Oracle の場合はSQL*Loaderです。Postgres の場合、COPYコマンドがあります。

Java 固有のオプションを探している場合は、以下が私の優先順位です。

  1. JDBC:バッチ操作のサポートを使用しますが、バッチ操作で障害が発生するとフロー全体がショートするという制限があります

  2. Hibernate: ORM はこのためのものではありません。ただし、StatelessSessionバッチ構成を一緒に使用して、最適なパフォーマンスを実現できます。

于 2011-02-14T13:32:26.910 に答える
0

私の意見では、そのようなケース (一括インポート) は、データベース機能を使用して対処する必要があります。

Oracle SQLLoader の場合 (@Pangea の提案による)

MS SQL Server BCP(一括コピー)の場合

これに対する@Javaベースのアプローチを探している場合は、@Pangeaをエコーし​​ますそれに加えて、バッチ挿入をサブバッチに分割し、それらを同時に実行してパフォーマンスを向上させることができます。

例: 挿入するレコードが 10,000 の場合、それぞれ 200 レコードのバッチを作成し、5 つのバッチを同時に挿入できます。

この場合、各サブバッチを追跡するコードが必要です。

お役に立てれば!

于 2011-02-14T14:25:09.307 に答える