- スクリプトには、最大100のIMPORT(タスク)を入れることができます。それぞれのタスクは、先頭のBEGIN LOADコマンドと末尾のEND LOADコマンドで区切られます。
- BEGIN LOADコマンドは、セッションの数を指定し、制御パラメータの数を設定します。
BEGIN LOADコマンドは、設定される唯一のテーブルであるエラー テーブルの設定も行ないます。オプションとして、修飾されたデータベース名を指定することもできます。そのデータベース名は、変更する対象のデータベースとは違うものにできるため、実働データベースに影響を与えずにテーブルを作成し、削除できます。
さらに、BEGIN LOADコマンドは、エラーの数やパーセンテージ、セッション制限、ログオン試行時間(頑強度)、およびチェックポイントの頻度のような重要なタスク制御の受け入れ可能なしきい値レベルを設定します。さらに、このコマンドでは、オプションとして以下の要素も制御できます。- マクロの配置先を指定する。
- 特定の行に対する逐次操作を保証する。
- 複数の文を1つの要求にパックする場合の文の数を指定する。
- 再始動ロジック モードを選択する。
- スクリプト内で次に記述される項目は、通常、ターゲット テーブルを変更するためのデータが入った外部ファイル内のレコードの記述です。そのような入力レコードの記述は、LAYOUTコマンドに続く一連のコマンドとして記述されます。
LAYOUTコマンドは、記述しているレコード レイアウトに、固有名のタグを設定します。これは、残りのジョブのタスク内で続くスクリプト コマンドで参照されます。LAYOUTコマンドの後には、1つ以上のFIELD、FILLER、およびTABLEコマンドで指定された補助情報が続きます。
- 各FIELDコマンドは、入力行の1列を占める1つのデータ項目を記述します。それらの項目は、データ型、開始位置、長さ、およびその他のいくつかの特性によって記述されます。FIELDコマンドは、現在のタスクに関連した項目(列)にのみ使われます。これらは、ターゲット テーブルの変更点としてデータベースに送られる項目です。
列が、逐次化のための基本索引の一部であるとみなされる場合、FIELDコマンドにはKEY修飾子を入れることができます。
- 各FILLERコマンドは、FIELDコマンドの場合と同じく、入力行内の列を記述します。FILLERフィールドは、データベースに送られることはありません。このように、FILLERコマンドは、データベースに送らない列を指定します。したがって、行内の10個の連続した列を記述するのにFIELDコマンドとFILLERコマンドを交互に10個使うと、1行おきに合計5個の列がデータベースに送られます。
- TABLEコマンドは、入力と同じレイアウトを持つ既存のテーブルを指定します。TABLEコマンドが使われるのは、一部の列だけではなく行全体に対して変更が加えられる場合です。
- スクリプトの次のエントリは、DMLコマンドです。この後に、DML文のINSERT、UPDATE、およびDELETEが続きます。DMLコマンドは、DML文の入力の識別ラベルを作成し、そのすぐ後にコマンドが続きます。また、DMLコマンドは、エラー テーブルに基づいて欠落行および重複行を処理するためのエラー処理プロセスも定義します。
DMLコマンドの後には3つのDML文(INSERT、UPDATE、およびDELETE)が続きます。これらの文は、任意の順序で任意の回数指定することができます。INSERT文は、ターゲット テーブルにまったく新規の行を入れるために使用します。
UPDATEは、LAYOUT、FIELD、FILLERのコマンド シーケンスで定義されているとおりに入力レコードから列のデータ内容を取り出して、ターゲット テーブル内でそのデータに置き換えます。更新される行は、UPDATE文の条件句に指定されている基準に基づいて選択されます。
さらに、DMLコマンドでは、UPDATE文とINSERT文をペアにすることで、Teradata TPumpにUPSERT機能を提供できます。それによってTeradata TPumpは、UPDATE操作を試み、失敗した場合には同じ行でINSERTを実行するという操作を、1パスで実行できます。
DELETE文は、文中の条件句の指定どおりに、削除条件が真と評価されるたびに、ターゲット テーブルから行全体を削除します。
- この時点で、タスクについてまだ提供されていない情報は、入力データ ファイルの指定、タスクで使われるファイル内の先頭レコードと最終レコード、およびその他の関連情報だけです。これらは、IMPORTコマンドを使って提供します。このコマンドは、基本的に、ファイルX内のレコードAからレコードNまでを取り出し、レイアウト名(および仕様)を入力レコードに関連付けて、必要なDML(INSERT、UPDATE、およびDELETE)文を各レコードに適用するようにTeradata TPumpユーティリティに指示します。
- スクリプトの最後のコマンドは、END LOADコマンドです。このコマンドは、タスクのコマンドと文の終わりを示すもので、プログラムにタスクの実行を開始させます。
MultiLoadユーティリティとの互換性を図るため、複数のIMPORT(最大100個まで)をBEGIN/END LOADの1組のペア内で使うことができます。ただし、Teradata TPumpには適用フェーズがあるため、IMPORTを1つずつ持つ100組のBEGIN/END LOADペアが入ったスクリプトと、1組のBEGIN/END LOADペアに100個のIMPORTが入ったスクリプトとでは、大きな相違はありません。
次のスクリプト作成ガイドラインは、Teradata TPumpジョブ スクリプトの作成に役立ちます。