errortname1として指定したエラー表に記録されるエラーを訂正するには、下記の手順に従います。
- 第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列に表示される値は、エラーを発生したフィールドの名前です。
- 次の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
- ErrorCode欄の値が制約違反または変換エラーの発生を示している場合は、次のようにしてレコード モードでDataParcel情報を抽出します。
- 手順1で戻されたErrorCode情報とErrorFieldName情報、また手順2で戻されたDataParcel情報を使って、訂正してデータベースに再ロードするレコードがどれかを調べます。個々のエラー条件を訂正するための方法は、エラーの数と種類によって異なります。
- エラーの訂正後、以下のBTEQコマンドとTeradata SQL文を使用して、訂正したレコードをデータベース上のTeradata FastLoad表に挿入します。
操作 実現方法 データをデータベースに転送する BTEQ IMPORTコマンド 各レコードのフィールドを定義する Teradata SQL USING修飾子 Teradata FastLoad表にレコードを挿入する Teradata SQL INSERT文 データベースからレコード モードでエクスポートされたデータ レコードでは、INSERT文の最初の2バイトを参照しないでください。その場合は、USING修飾子の最初のフィールド(可変パラメータ)をダミーのSMALLINTフィールドにします。レコード モードでデータを選択する場合、可変長の列の先頭にはそのデータ フィールドの長さを示す2バイトのフィールドが付加されます。しかし、errortname1表のDataParcel列は可変長フィールドとして定義されているので、最初の2バイトは常に長さを示します。INSERT文でこのフィールドを参照しない場合、データベースによって入力データの各レコードのこの部分は無視されます。 - 必要に応じて手順2~4を繰り返し、errortname1エラー条件すべてを訂正します。
- すべてのエラーを訂正したなら、データベースからerrortname1表を削除します。