私はJava、Spring、PostgreSQLでアプリケーションを開発しています。私はデータベース層としてSpring-JDBCを使用しています。アプリケーション(Java)から一時テーブルにデータをインポートする最も速い方法は何ですか?
私のJavaアプリケーションでは、約10.000行が一時テーブルに挿入する必要があります。それらをインポートする最も速い方法は何ですか?
は、私はすでに試した:
create temporary table my_table on commit drop;
with data as (values (...), (...), ...) -- all 10.000 rows enumerated
insert into my_table select * from data;
しかし、クエリが解析には大きすぎるとなるため、これは失敗します。
小さいバッチを送信するだけでいいですか、データをデータベースにストリーミングするより賢明な方法がありますか?私がやっている何
更新
:
をデータベースでは、との表は、 '外部エンティティ'、のは言わせ、そこにあります。数時間ごとに、ActiveMQブローカを介して最新のエンティティを更新します。このセットは私のデータベースにある必要があります。私は、次の操作を行います。
- 挿入一時テーブルに実際のテーブルに
- 更新変更されたエンティティを
- は、実際のテーブルに一時テーブルから新しいエンティティをコピー
- は、実際のテーブルから古いエンティティを削除
私は実際のテーブルを単純に切り捨てて、実際のテーブルに直接挿入することはできません。なぜなら、そのテーブルの外部制約とそのテーブルのトリガのためです。言い換えれば、私は実際の変化を反映しているだけです。
@Marvinを置くための最速の方法だろう、私は私の記述に以下を追加します。 – Kwarteeuw
一方、これはおそらく役立ちます:https://stackoverflow.com/questions/15311042/different-ways-of-performing-bulk-insert-into-database-from-a-java-application?rq=1 – Marvin
メモリ内の「外部エンティティ」、例えば新しいエントリを実際のテーブルに直接追加するだけですか? – Marvin