• 文字サイズ変更
  • S
  • M
  • L

FAQのNo.から検索


  • No : 35822
  • 公開日時 : 2024/05/08 16:50
  • 印刷
DSCloudDSServista

【DataSpider】「バッチアップデート・インサート」と「アップデート・インサート」で実行結果が異なるのは何故ですか

[テーブル書き込み] 処理で「バッチアップデート・インサート」を実施したところ、一意制約違反のエラーが発生しました。 

 

しかし、同様の入力データを使用して「アップデート・インサート」を実施した際にはエラーが発生しませんでした。 

 

実行結果が異なるのは何故ですか。 

カテゴリー : 

回答

■仕様説明 

 「アップデート・インサート」はヘルプに以下の記載がございますように、 対象のデータを 1件ずつ処理します。 

 ------ 

 [アップデート・インサート]:(デフォルト) 

 1行ごとにUPDATE文を実行し、キーの値と一致する行が存在しない場合はINSERT文を実行します。 

 ------ 

 

 対して、「バッチアップデート・インサート」はバッチサイズで指定した件数をまとめて処理します。 

  

 このため、同バッチ内に重複キーのデータが存在し、そのキーのデータが書き込み先のテーブルに存在しない場合、INSERT が実行されますが、INSERT 対象のデータのキー値が重複しているため、一意制約違反のエラーが発生します。 

  

上記より、同バッチ内に重複キーのデータが存在する場合は、以下の対応策をご検討ください。 

 

■対応策 

 1.アップデート・インサートモードを使用する。 

  

 2.バッチサイズを小さくする。 

  1バッチ内に重複キーが発生しないサイズを設定してください。 

 

 3. 入力データ内でキー重複が発生しないように入力データを作成する。 

  

 4. 中間テーブルなどを作成し、重複キーを除外した入力データをバッチアップデート・インサートする。 

目的別で検索
仕様確認

このFAQに関してのご意見をお聞かせ下さい。