Teradata 多負(fù)載

2018-01-12 17:15 更新

MultiLoad可以一次加載多個表,它還可以執(zhí)行不同類型的任務(wù),如INSERT,DELETE,UPDATE和UPSERT。它一次最多可以加載5個表,并在腳本中執(zhí)行多達(dá)20個DML操作。 MultiLoad不需要目標(biāo)表。

MultiLoad支持兩種模式:

  • IMPORT
  • DELETE

除了目標(biāo)表之外,MultiLoad還需要一個工作表,一個日志表和兩個錯誤表。

日志表 - 用于維護(hù)在加載期間采用的檢查點(diǎn),將用于重新啟動。

錯誤表 - 在發(fā)生錯誤時,在加載期間插入這些表。第一個錯誤表存儲轉(zhuǎn)換錯誤,而第二個錯誤表存儲重復(fù)記錄。

日志表 - 保持MultiLoad每個階段的結(jié)果,以便重新啟動。

工作表 - MultiLoad腳本為每個目標(biāo)表創(chuàng)建一個工作表。工作表用于保留DML任務(wù)和輸入數(shù)據(jù)。

局限性

MultiLoad有一些限制。

目標(biāo)表不支持唯一次索引。

不支持參照完整性。

不支持觸發(fā)器。

MultiLoad如何工作

MultiLoad導(dǎo)入有五個階段:

階段1 - 初步階段 - 執(zhí)行基本設(shè)置活動。

階段2 - DML事務(wù)階段 - 驗證DML語句的語法并將其帶到Teradata系統(tǒng)。

階段3 - 采集階段 - 將輸入數(shù)據(jù)放入工作表并鎖定表。

階段4 - 應(yīng)用程序階段 - 應(yīng)用所有DML操作。

階段5 - 清理階段 - 釋放表鎖。

MultiLoad腳本中涉及的步驟是

步驟1 - 設(shè)置日志表。

步驟2 - 登錄到Teradata。

步驟3 - 指定目標(biāo),工作和錯誤表。

步驟4 - 定義INPUT文件布局。

步驟5 - 定義DML查詢。

步驟6 - 命名IMPORT文件。

步驟7 - 指定要使用的LAYOUT。

步驟8 - 啟動加載。

步驟9 - 完成加載并終止會話。

創(chuàng)建具有以下記錄的文本文件,并將該文件命名為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 

以下示例是一個MultiLoad腳本,它從employee表中讀取記錄并加載到Employee_Stg表中。

.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;

執(zhí)行MultiLoad腳本

一旦創(chuàng)建了輸入文件employee.txt并且多重腳本命名為EmployeeLoad.ml,則可以在UNIX和Windows中使用以下命令運(yùn)行Multiload腳本。

Multiload < EmployeeLoad.ml;
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號