インポート タスクでは、大量のクライアント データが、データベース上の1つ以上の表またはビューにすばやく適用されます。
データベース の再始動/回復操作によってTeradata MultiLoadのインポート タスクが中断された場合は、中断地点から処理が再開されます。中断前に行なわれた処理のロールバックおよび繰返しは行なわれません。これにより、再始動/回復操作時のトランザクション ロールバックによって発生する処理上の不具合が効果的に取り除かれます。
次の表 に、Teradata MultiLoadジョブ スクリプトにインポート タスクをプログラミングする際の考慮事項を示します。
対象 | インポート タスクの考慮事項 |
---|---|
Archive/Recoveryユーティリティ文 | 以下の文が含まれます。
Teradata MultiLoadのターゲット表が関連づけられている場合、データベースでは以下の処理が行なわれます。
アプリケーション フェーズでは、DUMP文が正常に処理されない場合があります。Teradata MultiLoadジョブを開始する前に、以下の予防策を講じて、ターゲット表を保護してください。
上記の処理を実行すると、不良データまたは操作上のエラーで表が破損した場合でも、ダンプから表を復元してチェックポイントまで戻します。 |
列の値の指定 | 適用可能なインポートされる各レコードと組み合わせて考えるときには、以下のすべての列に対して、列の値を明示して指定する必要があります。
更新および削除のターゲット表の要件を満たすには、次のいずれかの形式の一連の条件を、AND論理演算子とともに使用します。
Teradata MultiLoadでは、OR論理演算子を使用したUPDATE文やDELETE文を処理できません。代わりに、2つの別々のDML文を作成して、それらを条件付きで適用します。
|
データ ソースの制限 | Teradata MultiLoadのインポート タスクで使用するソース データは、すべてクライアント システム上のデータ ソースでなければなりません。データベースの既存の表は使用できません。 また、インポート タスク内の文では、指定されたインポート タスク表以外の、データベースの表または行を参照することもできません。 |
DROP、および他のDDL文 | インポート タスクの実行中、Teradata MultiLoadはDROP以外のDDL文をすべて拒否します。ただし、実際にソース データをターゲット表に適用するアプリケーション フェーズ中は、DROP文の処理と他の文の拒否が両方ともTeradata MultiLoadによって延期されます。アプリケーション フェーズが完了すると、Teradata MultiLoadは待機していたDROP文をすべて処理します。 一般的にDROP文は上記のように扱われます。ただし、Teradata MultiLoadの停止が必要となる場合もあります。それ以外の場合は、Teradata MultiLoadはDROP文を直ちに処理します。
|
無効なコマンド パラメータ | Teradata MultiLoadの削除タスクでは、以下のコマンド パラメータは使用できません。
|
ロック | Teradata MultiLoadでは、影響を受けるすべてのターゲット表への同時選択アクセスを可能にするために、インポート タスクの処理中全体に渡ってアクセス ロックが使用されます。 以下の場合、読取りロックまたは書込みロックが必要なDML文を、取得フェーズで同時使用できます。
インポート タスクのアプリケーション フェーズおよびクリーンアップ フェーズの間は、選択アクセス以外の同時DML文は使用できません。 |
複数の操作 | 各インポート タスクには、複数のINSERT、UPDATE、DELETEの各文を使用でき、クライアント ファイルの1回の受渡しにつき最高5個の表に複数のDML操作を条件付きで適用できます。 クライアント システム ファイルが関連付けられている場合、各DML操作では、ターゲット表、またはターゲット ビューの基となる表の基本索引を構成している、ヌルにできない、またはデフォルトを使用できない列に必ず値を提供する必要があります。 各DML操作で次の処理が実行されます。
1つのクライアント レコードが複数の条件を満たす場合、Teradata MultiLoadはそのレコードのコピーを複数作成し、それぞれに別々のマッチ タグを付けてデータベースに送信します。 |
戻りコード | MultiLoadを使用する特別な顧客アプリケーションによっては、いずれかのエラー表(ETまたはUV)の行は必ずしも予想外のものではないため、非ゼロ戻り/終了コードの設定が常に正しい操作になるとは限りません。 |
サポートされる文 | Teradata MultiLoadでは、1つ以上のソースからデータをインポートする場合、以下のDML文を任意に組み合わせて使用できます。
DML文の各グループの前にはDML LABELコマンドを指定する必要があります。このコマンドによって、ラベルとエラー処理オプションを定義します。 各データ ソースについては次のとおりです。
データ ソースのレコードの配置を定義するためには、各LAYOUTコマンドの後に、FIELDコマンド、FILLERコマンドおよびTABLEコマンドの3つのコマンドを続けて指定する必要があります。 |
ターゲット表 | 各インポート タスクでは、データベース上のターゲット表に最大5つまでアクセスできます。インポート タスクを実行するためには、各ターゲット表に対する適切なアクセス権限(INSERT、UPDATE、およびDELETEに対する)が必要です。 各ターゲット表については次のとおりです。
各インポート タスクで同一のターゲット表にアクセスする必要はありません。 |
Upsert機能 | Teradata MultiLoadのUpsert機能は、同一の行にUPDATE文とINSERT文を連続して適用します。 ターゲット表の行が存在しないためにUPDAT文が失敗した場合、Teradata MultiLoadは自動的にINSERT文を実行して、2度ではなく1度の受渡しで操作を完了します。 Update文のWHERE句内のデータ長が無効であったためUpdate文が失敗した場合、このデータ長を修正して、Update文を再実行します。UPDATE文のデータ フィールドの長さが、基本索引列の長さより長い場合、この状態が発生する可能性があります。回避方法として、FILLERを使用するか、データ フィールドの明示的キャストを使用して、基本索引列の長さを一致させます。 |