第1エラー表のエラーを訂正するための手順 - FastLoad

Teradata® FastLoad リファレンス

Product
FastLoad
Release Number
17.00
Published
2020年6月
Language
日本語
Last Update
2021-01-07
dita:mapPath
ja-JP/ije1544831946874.ditamap
dita:ditavalPath
ja-JP/ije1544831946874.ditaval
dita:id
B035-2411
Product Category
Teradata Tools and Utilities
errortname1として指定したエラー表に記録されるエラーを訂正するには、下記の手順に従います。
  1. 第1エラー表の各エラーのエラー コードとフィールド名を抽出します。

    SELECT ErrorCode, ErrorFieldName FROM errortname1 ORDER BY ErrorCode ;

    errortname1は、第1エラー表に指定した名前です。

    BTEQ応答はエラー コードおよび関連フィールド名を示すリストで、その形式は次のとおりです。
    ***Query completed. 2 rows found. 2 columns returned.
    ***Total elapsed time was 1 second.
    ErrorCode ErrorFieldName
    --------- ------------------
       2679   A
       2679   A

    ErrorCode列に一覧表示されている値は、各エラー条件のデータベース戻りコードです。この戻りコードについては、Teradata Vantage™ - データベース メッセージ, B035-1096を参照してください。

    ErrorFieldName列に表示される値は、エラーを発生したフィールドの名前です。

  2. 次のBTEQコマンドとTeradata SQL文を使うことによって、第1エラー表の各エラーのデータ レコードを抽出し、クライアント システム上の指定されたerr.outファイルに格納します。
    • ErrorCode欄の値が制約違反または変換エラーの発生を示している場合は、次のようにしてレコード モードでDataParcel情報を抽出します。
      .SET RECORDMODE ON
      .EXPORT DATA FILE=err.out
      SELECT DataParcel FROM errortname1

      レコード モードでは、データベースによってSELECT文の結果がクライアント コンピュータ用の形式(通常は16進ダンプ)で戻されます。したがって、Teradata FastLoadのDEFINEコマンドで識別されたフィールドがすべて、INSERT文にも指定されていた場合、Teradata FastLoadエラー表から抽出されるデータは、元の入力データ ソースと同じ形式です。

    • ただし、ErrorCode列の値が「AMP停止状態」を示している場合は、RECORDMODEコマンドを使用しないでください。
      .EXPORT DATA FILE=err.out
      SELECT DataParcel FROM errortname1
  3. 手順1で戻されたErrorCode情報とErrorFieldName情報、また手順2で戻されたDataParcel情報を使って、訂正してデータベースに再ロードするレコードがどれかを調べます。個々のエラー条件を訂正するための方法は、エラーの数と種類によって異なります。
  4. エラーの訂正後、以下のBTEQコマンドとTeradata SQL文を使用して、訂正したレコードをデータベース上のTeradata FastLoad表に挿入します。
    操作 実現方法
    データをデータベースに転送する BTEQ IMPORTコマンド
    各レコードのフィールドを定義する Teradata SQL USING修飾子
    Teradata FastLoad表にレコードを挿入する Teradata SQL INSERT文
    データベースからレコード モードでエクスポートされたデータ レコードでは、INSERT文の最初の2バイトを参照しないでください。その場合は、USING修飾子の最初のフィールド(可変パラメータ)をダミーのSMALLINTフィールドにします。
    レコード モードでデータを選択する場合、可変長の列の先頭にはそのデータ フィールドの長さを示す2バイトのフィールドが付加されます。しかし、errortname1表のDataParcel列は可変長フィールドとして定義されているので、最初の2バイトは常に長さを示します。INSERT文でこのフィールドを参照しない場合、データベースによって入力データの各レコードのこの部分は無視されます。
  5. 必要に応じて手順2~4を繰り返し、errortname1エラー条件すべてを訂正します。
  6. すべてのエラーを訂正したなら、データベースからerrortname1表を削除します。