以下に、簡単なUpdateオペレータ タスク、エラー テーブルのリスト、およびエラー原因を特定するための手順を示します。 このタスク例では、2つのDML文(INSERT文とUPDATE文)から成るDMLグループを1つだけ使用して、Updateオペレータ ジョブを説明します。
この例では、エラー テーブルのエラー情報すべてを使用します。 通常は、エラー テーブルの1つまたは2つの列を評価すれば、エラーの原因が分かります。
この例では、次のAPPLY文を使用して、このセクションのエラー テーブルを作成します。
APPLY 'INSERT INTO table1 VALUES (:FIELD1,:FIELD2 ); UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4;'
タスク例
以下の例のシーケンス タイプ列と番号列は、各ステートメントに割り当てられるタイプと番号を示します。 ステートメント列は、実際のジョブステートメントを示します。
シーケンス | ステートメント | |
---|---|---|
タイプ | 番号 | |
DML | 001 | 'INSERT INTO table1 VALUES (:FIELD1,:FIELD2 ); UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4;' |
STMT | 001 | INSERT INTO table1 VALUES (:FIELD1, :FIELD2 ); |
STMT | 002 | UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4; |
以下は、上記のタスクによって生成された第1エラー テーブルです。 この情報は、タスクで問題が発生したことを示しています。
ImportSeq | DMLSeq | SMTSeq | ApplySeq | Source Seq | ErrorCode | ErrorField |
---|---|---|---|---|---|---|
002 | 001 | 002 | 001 | 20456 | 2679 | field3 |
以下の手順を使用して、エラー テーブルの情報を評価し、問題を識別します。
- DMLSeqフィールドをチェックし、DMLグループを特定します。 このフィールドは、順序番号が001になっています。
- STMTSeqフィールドをチェックします。 シーケンス番号は002です。つまり、2番目のDML文を実行したときにエラーが発生したことが分かります。具体的には、タスクのUPDATE文でエラーが発生しています。
- DMLSeqが001であるため、Updateオペレータのジョブ スクリプトを調べ、最初のDMLグループで2つのDML文を使用したことを確認します。
- ImportSeqフィールドをチェックします。 フィールド値002により、2番目の入力データ ソースで行を処理したときにエラーが発生したことが分かります。
- ErrorCodeフィールドの意味を確認します。 エラー2679"The format or data contains a bad character(形式またはデータに無効な文字が含まれています)"は、クライアント システムのデータに問題があることを示しています。
- ErrorFieldフィールドをチェックします。 field3は、ターゲット テーブルでfield3を構築したときにエラーが発生したことを示しています。 field3は、Updateオペレータ ジョブ スクリプトの入力スキーマのフィールドを示します。
- スクリプトを調べると、UPDATE文はtable2をロードしており、次のことが分かります。
- 発生したエラーの種類
- エラーを検出したステートメント
- エラーを発生した入力データ ソース
- table2でエラーを発生したフィールド
- SourceSeqフィールドをチェックします。 フィールド値20456は、入力ソースの20,456番目のレコードに問題があることを示しています。
これで問題は識別され、修正することができます。