1

私の Java コードには、Prepared ステートメント ps_temp があります。

PreparedStatement ps_temp;

// loop

ps_temp.setString(1,'abc');
....
....
ps_temp.addBatch();

// end loop

ps_temp.executeBatch();

バッチ内のレコードの 1 つが Unique Index 制約を作成したため、最終的に ps_temp.executeBatch() 全体が失敗しました。バッチ内の適切なレコードでさえテーブルに挿入されません。

それで、私のバッチにいくつかの良いレコードといくつかの悪いレコードがある場合(整合性の制約を引き起こす可能性があります)、THEN AT LEAST THE GOOD RECORDS GETS INSERTED INTO THE TABLE ?

前もって感謝します !!誰も〜ない

4

1 に答える 1

1

レコードのバッチに悪いレコードがほとんど含まれていないことはよくあります。一度にすべてのレコードを挿入しようとして、1 つのレコードが失敗すると、すべての挿入が拒否されます。それは当然のことであり、「トランザクション処理」の中心的な目的です。

通常、バッチ挿入の場合、次の 2 つの方法を使用できます。

1) レコード挿入ごとにコミット --> 非常にパフォーマンスの高いプロセス。

2) 合計レコードを小さな「チャンク」に分割し、データベースに挿入します。そのため、不良レコードを含むチャンクだけが失敗し、他のチャンクがデータベースに挿入されます。

または、これらのことを自分で処理したくない場合は、フレームワークを使用してください。 春バッチ

その場合の選択肢の1つになる可能性があります

于 2014-05-13T05:21:40.753 に答える