Teradata - FastLoad



FastLoad 實用程式用於將資料載入到空表中。由於它不使用臨時日誌,因此可以快速載入資料。即使目標表是 MULTISET 表,它也不會載入重複的行。

限制

目標表不應該有二級索引、連線索引和外部索引鍵引用。

FastLoad 如何工作

FastLoad 分兩個階段執行。

階段 1

  • 解析引擎從輸入檔案讀取記錄,並將一個塊傳送到每個 AMP。

  • 每個 AMP 儲存記錄塊。

  • 然後 AMP 對每條記錄進行雜湊並將其重新分配到正確的 AMP。

  • 在階段 1 結束時,每個 AMP 都有其行,但它們不是按行雜湊順序排列的。

階段 2

  • 當 FastLoad 接收 END LOADING 語句時,階段 2 開始。

  • 每個 AMP 按行雜湊對記錄進行排序,並將它們寫入磁碟。

  • 釋放目標表的鎖並刪除錯誤表。

示例

建立一個包含以下記錄的文字檔案,並將檔案命名為 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 表中的 FastLoad 指令碼示例。

LOGON 192.168.1.102/dbc,dbc;  
   DATABASE tduser;  
   BEGIN LOADING tduser.Employee_Stg  
      ERRORFILES Employee_ET, Employee_UV  
      CHECKPOINT 10;  
      SET RECORD VARTEXT ",";  
      DEFINE in_EmployeeNo (VARCHAR(10)), 
         in_FirstName (VARCHAR(30)), 
         in_LastName (VARCHAR(30)), 
         in_BirthDate (VARCHAR(10)), 
         in_JoinedDate (VARCHAR(10)), 
         in_DepartmentNo (VARCHAR(02)), 
         FILE = employee.txt;
      INSERT INTO Employee_Stg (
         EmployeeNo,
         FirstName,
         LastName,
         BirthDate,
         JoinedDate, 
         DepartmentNo
      ) 
      VALUES (  
         :in_EmployeeNo, 
         :in_FirstName, 
         :in_LastName, 
         :in_BirthDate (FORMAT 'YYYY-MM-DD'), 
         :in_JoinedDate (FORMAT 'YYYY-MM-DD'),
         :in_DepartmentNo
      ); 
   END LOADING;  
LOGOFF;

執行 FastLoad 指令碼

建立輸入檔案 employee.txt 後,並將 FastLoad 指令碼命名為 EmployeeLoad.fl,您可以在 UNIX 和 Windows 中使用以下命令執行 FastLoad 指令碼。

FastLoad < EmployeeLoad.fl;

執行上述命令後,FastLoad 指令碼將執行並生成日誌。在日誌中,您可以看到 FastLoad 處理的記錄數和狀態程式碼。

**** 03:19:14 END LOADING COMPLETE 
   Total Records Read              =  5 
   Total Error Table 1             =  0  ---- Table has been dropped 
   Total Error Table 2             =  0  ---- Table has been dropped 
   Total Inserts Applied           =  5 
   Total Duplicate Rows            =  0 
   Start:   Fri Jan  8 03:19:13 2016 
   End  :   Fri Jan  8 03:19:14 2016 
**** 03:19:14 Application Phase statistics: 
              Elapsed time: 00:00:01 (in hh:mm:ss) 
0008  LOGOFF; 
**** 03:19:15 Logging off all sessions

FastLoad 術語

以下是 FastLoad 指令碼中常用的術語列表。

  • LOGON − 登入 Teradata 並啟動一個或多個會話。

  • DATABASE − 設定預設資料庫。

  • BEGIN LOADING − 標識要載入的表。

  • ERRORFILES − 標識需要建立/更新的 2 個錯誤表。

  • CHECKPOINT − 定義何時進行檢查點。

  • SET RECORD − 指定輸入檔案格式是格式化、二進位制、文字還是非格式化。

  • DEFINE − 定義輸入檔案佈局。

  • FILE − 指定輸入檔名和路徑。

  • INSERT − 將輸入檔案中的記錄插入到目標表中。

  • END LOADING − 啟動 FastLoad 的階段 2。將記錄分發到目標表中。

  • LOGOFF − 結束所有會話並終止 FastLoad。

廣告

© . All rights reserved.