以降の各トピックでは、簡単なTeradata MultiLoadタスクの例、エラー表の内容、およびエラー原因を特定する手順について説明します。
わかりやすくするため、タスク例のTeradata MultiLoadジョブにはDMLコマンドとIMPORTコマンドしか含まれていません。
例では、エラー表のエラー情報をすべて使用しています。ほとんどの場合、エラー表エントリの列を1つか2つ検証すれば、エラーの原因を特定できます。
Teradata MultiLoadタスクの例
次の表では、「順序タイプ」と「連番」の各カラムは各文のタイプと番号示し、「文」のカラムは実際のTeradata MultiLoadジョブ文を示します。
順序タイプ | 順序番号 | ステートメント |
---|---|---|
DML | 001 | .DML LABEL FIRSTDML; |
STMT | 001 | INSERT INTO table1 VALUES( :FIELD1, :FIELD2 ); |
STMT | 002 | UPDATE table2 SET field3 = :FIELD3 WHERE field4 = :FIELD4; |
DML | 002 | .DML LABEL SECNDDML; |
STMT | 001 | DELETE FROM table3 WHERE field3 = :FIELD3; |
IMPORT | 001 | .IMPORT INFILE file1 LAYOUT layout1 |
APPLY | 001 | APPLY FIRSTDML |
IMPORT | 002 | .IMPORT INFILE file2 LAYOUT layout2 |
APPLY | 001 | APPLY FIRSTDML |
APPLY | 002 | APPLY SECONDDML; |
エラー表の内容
次の表の の情報は、最初のエラー テーブル(取得またはET_tname1エラー テーブル)からのものです。この情報はタスク例の問題を示します。
Import Seq | DML Seq | SMT Seq | Apply Seq | Source Seq | エラー コード | Error Field |
---|---|---|---|---|---|---|
002 | 001 | 002 | 001 | 20456 | 2679 | field3 |
エラーを特定する手順
以下の手順は、エラー表の情報を使用して問題を特定する方法を示しています。
- DMLSeqフィールドを見て、実行されていた文を見つけます。このフィールドは、順序番号が001になっています。
- SMTSeqフィールドをチェックします。このフィールドの連続番号002は、最初のDML LABELコマンドの後、2番目の文(このタスク例ではUPDATEコマンド)を実行している最中にエラーが発生したことを意味しています。
- Teradata MultiLoadジョブ スクリプトで、各IMPORTコマンドに1つずつ、合計2つのDML LABELコマンドが使用されていることを確認します。
- ImportSeqフィールドを検査する。002という値は、2つ目のIMPORTコマンドの処理中にエラーが発生したことを示します。
- ApplySeqフィールドをチェックします。001という値は、第1のAPPLY機能の処理中にエラーが起こったことを示しています。
- ErrorCodeフィールドの意味をチェックします。エラー2679"The format or data contains a bad character(書式またはデータに不正な文字があります)"は、クライアント システムのデータに問題があることを示しています。
- ErrorFieldフィールドをチェックします。field3は、ターゲット表のfield3の構築中にエラーが起こったことを示しています。
- Teradata MultiLoadジョブスクリプトをチェックします。スクリプトは、ターゲット表のfield3がクライアント データのFIELD3から構築されたことを示しています。
- IMPORTコマンドのLAYOUT指定により、問題のデータがクライアント データの行内のどこに位置しているかを把握できます。
スクリプトは、IMPORTコマンドがfile2をロードしていたことを示していることから、次の点が明らかになります。
- 発生しているエラー
- エラーを検出したステートメント
- どのファイルにエラーがあるか
- SourceSeqフィールドをチェックします。20456という値は、このファイルの20456番目のレコードに問題があることを示しています。
これで問題が特定され、解決できます。