17.10 - エラー原因の特定 - MultiLoad

Teradata® MultiLoadリファレンス

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

以降の各トピックでは、簡単な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

エラーを特定する手順

以下の手順は、エラー表の情報を使用して問題を特定する方法を示しています。

  1. DMLSeqフィールドを見て、実行されていた文を見つけます。このフィールドは、順序番号が001になっています。
  2. SMTSeqフィールドをチェックします。このフィールドの連続番号002は、最初のDML LABELコマンドの後、2番目の文(このタスク例ではUPDATEコマンド)を実行している最中にエラーが発生したことを意味しています。
  3. Teradata MultiLoadジョブ スクリプトで、各IMPORTコマンドに1つずつ、合計2つのDML LABELコマンドが使用されていることを確認します。
  4. ImportSeqフィールドを検査する。002という値は、2つ目のIMPORTコマンドの処理中にエラーが発生したことを示します。
  5. ApplySeqフィールドをチェックします。001という値は、第1のAPPLY機能の処理中にエラーが起こったことを示しています。
  6. ErrorCodeフィールドの意味をチェックします。エラー2679"The format or data contains a bad character(書式またはデータに不正な文字があります)"は、クライアント システムのデータに問題があることを示しています。
  7. ErrorFieldフィールドをチェックします。field3は、ターゲット表のfield3の構築中にエラーが起こったことを示しています。
  8. Teradata MultiLoadジョブスクリプトをチェックします。スクリプトは、ターゲット表のfield3がクライアント データのFIELD3から構築されたことを示しています。
  9. IMPORTコマンドのLAYOUT指定により、問題のデータがクライアント データの行内のどこに位置しているかを把握できます。

    スクリプトは、IMPORTコマンドがfile2をロードしていたことを示していることから、次の点が明らかになります。

    • 発生しているエラー
    • エラーを検出したステートメント
    • どのファイルにエラーがあるか
  10. SourceSeqフィールドをチェックします。20456という値は、このファイルの20456番目のレコードに問題があることを示しています。

    これで問題が特定され、解決できます。