17.10 - 使用上の注意 - MultiLoad

Teradata® MultiLoadリファレンス

Product
MultiLoad
Release Number
17.10
Release Date
2021年6月
Content Type
プログラミング リファレンス
Publication ID
B035-2409-061K-JPN
Language
日本語 (日本)

次の表に、DML LABELコマンドを使用する際の考慮事項を示します。

DML LABELの考慮事項
対象 使用上の注意
重複行チェックの省略 表がマルチセット表である(行の重複が許可される)場合、または固有の基本索引が表に含まれる(固有性テストが重複行チェックの代りに行われる)場合、重複行チェックは実行されません。
DO INSERT FOR ROWSオプション Upsert操作の規則に準拠することにより、さまざまなDO INSERT ROWSオプションを使用できます。

Upsert操作を使用すると、Teradata MultiLoadでは1回のデータ受渡しで以下の両方の操作を行なうことができます。

  • 更新される必要がある行を更新する
  • 挿入される必要がある行を挿入する

Upsert操作を行なわない場合、次のどちらかの処理を行なわなければなりません。

  • 更新操作と挿入操作のデータを事前に分けておく。
  • まず、すべてのデータに対してUPDATE文を使用し、次に更新操作に失敗したデータに対してINSERT文を使用する。
インポート タスク インポート タスクでは、1つのDML LABELコマンドに、最高5種類のエラー処理オプションを指定できます。例えば、次のように指定できます。
.DML LABEL COMPLEX
IGNORE DUPLICATE INSERT ROWS
MARK   DUPLICATE UPDATE ROWS
IGNORE MISSING   UPDATE ROWS
MARK   MISSING   DELETE ROWS
DO INSERT FOR MISSING UPDATE ROWS; 
MARK MISSING UPDATE ROWSオプション DO INSERT ROWSオプションと同時にMARK MISSING UPDATE ROWSを指定すると、更新に失敗したすべてのレコードが、その後INSERT文が実行されたことを示すエラー コードと共にtname4アプリケーション エラー表にTeradata MultiLoadによって記録されます。

その後の挿入操作が失敗すると、挿入レコードもアプリケーション エラー表に記録されます。

ただし、Upsert操作のデフォルトは、NOT MARK MISSING UPDATE ROWSです。Upsert機能では、更新操作に失敗すると挿入操作が発生するためです。

Upsert操作の更新部分の失敗は、それ自体ではエラーとはならないため、エラーとして処理されません。

MARK MISSING DELETE ROWS オプション MARK MISSING DELETE ROWSオプションは、DO INSERT FOR ROWSオプションと同時に使用した場合何の効果もありません。
Upsert機能 Upsert機能を使用する場合は、以下の点に注意してください。
  • DMLグループには2つのDML文を指定します。
  • 最初のDML文は、Teradata MultiLoadのすべてのタスク規則に準拠するUPDATE文とします。
  • 2番目のDML文を必ずINSERT文とし、UPDATE文のWHERE句で指定した基本索引と同じ基本索引を反映させます。これは、単一列の基本索引と複合列の基本索引の両方に適用されます。
  • ターゲット表にPPIがある場合、更新用にパーティション列の値を指定しなければなりません。
  • これら2つのDML文は同じテーブルを参照していなければなりません。
  • Upsertにあたり、UPDATE文のWHEREconditionの文字フィールドに対して定義するデータ長は、対応するフィールド長以下でなければなりません。フィールド長を越えた場合、Upsertは処理されません。例えば、次のように指定できます。
       UPDATE T1 SET c1=:f2 WHERE P1=:f1

P1がchar(5)でf1がchar(6)の場合、Upsertはキャンセルされます。