Teradata-multiload

提供:Dev Guides
移動先:案内検索

Teradata-MultiLoad

MultiLoadは一度に複数のテーブルをロードでき、INSERT、DELETE、UPDATE、UPSERTなどのさまざまなタイプのタスクも実行できます。 一度に最大5つのテーブルをロードし、スクリプトで最大20のDML操作を実行できます。 MultiLoadにはターゲットテーブルは必要ありません。

MultiLoadは2つのモードをサポートしています-

  • インポート
  • DELETE

MultiLoadには、ターゲットテーブルに加えて、作業テーブル、ログテーブル、および2つのエラーテーブルが必要です。

  • ログテーブル-再起動に使用されるロード中に取得されたチェックポイントを維持するために使用されます。
  • エラーテーブル-これらのテーブルは、エラー発生時にロード中に挿入されます。 最初のエラーテーブルには変換エラーが格納され、2番目のエラーテーブルには重複レコードが格納されます。
  • ログテーブル-MultiLoadの各フェーズの結果を再起動のために維持します。
  • 作業テーブル-MultiLoadスクリプトは、ターゲットテーブルごとに1つの作業テーブルを作成します。 作業テーブルは、DMLタスクと入力データを保持するために使用されます。

制限

MultiLoadにはいくつかの制限があります。

  • 一意のセカンダリインデックスはターゲットテーブルでサポートされていません。
  • 参照整合性はサポートされていません。
  • トリガーはサポートされていません。

MultiLoadの仕組み

MultiLoadインポートには5つのフェーズがあります-

  • *フェーズ1 *-予備フェーズ-基本的なセットアップアクティビティを実行します。
  • *フェーズ2 *-DMLトランザクションフェーズ-DMLステートメントの構文を検証し、Teradataシステムに取り込みます。
  • *フェーズ3 *-取得フェーズ-入力データを作業テーブルに取り込み、テーブルをロックします。
  • *フェーズ4 *-アプリケーションフェーズ-すべてのDML操作を適用します。
  • *フェーズ5 *-クリーンアップフェーズ-テーブルのロックを解除します。

MultiLoadスクリプトに含まれる手順は次のとおりです-

  • *ステップ1 *-ログテーブルを設定します。
  • *ステップ2 *-Teradataにログオンします。
  • *ステップ3 *-ターゲット、ワーク、エラーテーブルを指定します。
  • *ステップ4 *-INPUTファイルレイアウトを定義します。
  • *ステップ5 *-DMLクエリを定義します。
  • *ステップ6 *-IMPORTファイルに名前を付けます。
  • *ステップ7 *-使用するレイアウトを指定します。
  • *ステップ8 *-ロードを開始します。
  • *ステップ9 *-ロードを終了し、セッションを終了します。

次のレコードを含むテキストファイルを作成し、ファイルにemployee.txtという名前を付けます。

101,Mike,James,1980-01-05,2010-03-01,1
102,Robert,Williams,1983-03-05,2010-09-01,1
103,Peter,Paul,1983-04-01,2009-02-12,2
104,Alex,Stuart,1984-11-06,2014-01-01,2
105,Robert,James,1984-12-01,2015-03-09,3

次の例は、従業員テーブルからレコードを読み取り、Employee_StgテーブルにロードするMultiLoadスクリプトです。

.LOGTABLE tduser.Employee_log;
.LOGON 192.168.1.102/dbc,dbc;
   .BEGIN MLOAD TABLES Employee_Stg;
      .LAYOUT Employee;
      .FIELD in_EmployeeNo *VARCHAR(10);
      .FIELD in_FirstName* VARCHAR(30);
      .FIELD in_LastName *VARCHAR(30);
      .FIELD in_BirthDate* VARCHAR(10);
      .FIELD in_JoinedDate *VARCHAR(10);
      .FIELD in_DepartmentNo* VARCHAR(02);

      .DML LABEL EmpLabel;
      INSERT INTO Employee_Stg (
         EmployeeNo,
         FirstName,
         LastName,
         BirthDate,
         JoinedDate,
         DepartmentNo
      )
      VALUES (
         :in_EmployeeNo,
         :in_FirstName,
         :in_Lastname,
         :in_BirthDate,
         :in_JoinedDate,
         :in_DepartmentNo
      );
      .IMPORT INFILE employee.txt
      FORMAT VARTEXT ','
      LAYOUT Employee
      APPLY EmpLabel;
   .END MLOAD;
LOGOFF;

MultiLoadスクリプトの実行

入力ファイルemployee.txtが作成され、マルチロードスクリプトの名前がEmployeeLoad.mlになったら、UNIXおよびWindowsで次のコマンドを使用してマルチロードスクリプトを実行できます。

Multiload < EmployeeLoad.ml;