Teradata 快速加載(FastLoad)

2018-01-16 09:52 更新

FastLoad實(shí)用程序用于將數(shù)據(jù)加載到空表。 由于它不使用臨時(shí)日志,因此可以快速加載數(shù)據(jù)。 即使目標(biāo)表是MULTISET表,它也不會(huì)加載重復(fù)行。

局限性

目標(biāo)表不應(yīng)該有二級(jí)索引,連接索引和外鍵引用。

FastLoad如何工作

FastLoad在兩個(gè)階段執(zhí)行。

階段1

解析引擎從輸入文件中讀取記錄,并向每個(gè)AMP發(fā)送一個(gè)塊。

每個(gè)AMP存儲(chǔ)記錄塊。

然后AMP散列每個(gè)記錄,并將它們重新分配到正確的AMP。

在階段1結(jié)束時(shí),每個(gè)AMP具有其行,但它們不在行哈希序列中。

階段2

階段2在FastLoad接收到END LOADING語句時(shí)啟動(dòng)。

每個(gè)AMP對(duì)行散列上的記錄進(jìn)行排序,并將它們寫入磁盤。

釋放目標(biāo)表上的鎖,并刪除錯(cuò)誤表。

創(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

下面是一個(gè)示例FastLoad腳本將上述文件加載到Employee_Stg表中。

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;

執(zhí)行FastLoad腳本

創(chuàng)建輸入文件employee.txt并將FastLoad腳本命名為EmployeeLoad.fl后,可以在UNIX和Windows中使用以下命令運(yùn)行FastLoad腳本。

FastLoad < EmployeeLoad.fl;

一旦執(zhí)行上述命令,F(xiàn)astLoad腳本將運(yùn)行并產(chǎn)生日志。 在日志中,您可以看到FastLoad處理的記錄數(shù)和狀態(tài)代碼。

**** 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腳本中使用的常用術(shù)語列表。

LOGON - 登錄到Teradata并啟動(dòng)一個(gè)或多個(gè)會(huì)話。

DATABASE - 設(shè)置默認(rèn)數(shù)據(jù)庫。

BEGIN LOADING - 標(biāo)識(shí)要加載的表。

ERRORFILES - 標(biāo)識(shí)需要?jiǎng)?chuàng)建/更新的2個(gè)錯(cuò)誤表。

CHECKPOINT - 定義何時(shí)采取檢查點(diǎn)。

SET RECORD - 指定輸入文件格式是格式化,二進(jìn)制,文本還是未格式化。

DEFINE - 定義輸入文件布局。

FILE - 指定輸入文件名和路徑。

INSERT - 將輸入文件中的記錄插入目標(biāo)表中。

END LOADING - 啟動(dòng)FastLoad的第2階段。 將記錄分發(fā)到目標(biāo)表中。

LOGOFF - 結(jié)束所有會(huì)話并終止FastLoad。



以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)