📅  最后修改于: 2021-01-11 11:45:07             🧑  作者: Mango
Teradata FastLoad用于在Teradata系统上的空表中加载大量数据,或将数据从客户端加载到数据库系统。
它允许快速加载没有SI,JI,HI或RI(FK)或列分区的单个空表。
FastLoad在Teradata数据库上将有或没有主索引的大量数据加载到一个空表中。但是,行大小和列数对性能的影响大于其他任何因素。
Teradata FastLoad是一个命令驱动的实用程序,可以以批处理或交互方式调用。
Teradata FastLoad实用程序建立多个会话,即默认情况下每个AMP一个会话,在运行期间不使用任何临时日志,而是使用块而不是行传输数据以将数据加载到表中。这就是为什么它这么快。
一次只能加载一张桌子。如果我们要同时加载多个表,请调用多个FastLoad作业。 FastLoad可以从以下位置加载数据:
指定了三个关键组件来运行任何Teradata FastLoad。
1.日志表:需要一个日志表来跟踪系统上运行的每个FastLoad会话的状态。
Teradata在数据库SYSADMIN下维护一个称为fastlog的表。要使用此表,我们需要对该表具有INSERT,DELETE和UPDATE特权。
2.空目标表: FastLoad在向其插入数据之前需要一个空目标表。 FastLoad并不关心这是如何完成的。
我们可以通过在开始加载之前从目标表中删除数据或删除并重新创建目标表来实现此目的。
3.两个错误表:如果在FastLoad过程中发生异常,FastLoad需要两个错误表来捕获。这些表将自动创建。
注意Teradata最多可同时允许15个FastLoad,Multiload或FastExport。这样可以防止系统将所有资源仅提供给加载实用程序。
FastLoad将整个过程分为两个阶段:
阶段1:获取
阶段2:申请
例
创建具有以下记录的文本文件,并将文件命名为emp.txt。
202001, James, 1980/01/05, 2010/03/01, 1
202002, Robert, 1983/03/05, 2010/09/01, 1
202003, Peter, 1983/04/01, 2009/02/12, 2
202004, Mike, 1984/11/06, 2014/01/01, 2
202005, Robert, 1984/12/01, 2015/03/09, 3
以下是一个示例FastLoad脚本,用于将上述文件加载到Emp_Stg表中。
LOGON 192.168.1.102/dbc,dbc;
DATABASE tduser;
BEGIN LOADING tduser.Emp_Stg
ERRORFILES Emp_ET, Emp_UV
CHECKPOINT 10;
SET RECORD VARTEXT ",";
DEFINE
in_EmpId (VARCHAR(10)),
in_FirstName (VARCHAR(10)),
in_BirthDate (VARCHAR(10)),
in_JoinedDate (VARCHAR(10)),
in_DepartmentNo (VARCHAR(05)),
FILE = emp.txt;
INSERT INTO Emp_Stg
(
EmpId,
FirstName,
BirthDate,
JoinedDate,
DepartmentNo
)
VALUES
(
:in_EmpId,
:in_FirstName,
:in_BirthDate (FORMAT 'YYYY/MM/DD'),
:in_JoinedDate (FORMAT 'YYYY/MM/DD'),
:in_DepartmentNo
);
END LOADING;
LOGOFF;
创建输入文件emp.txt并将FastLoad脚本命名为EmpLoad.fl之后,我们可以在Windows中使用以下命令运行FastLoad脚本。
FastLoad < EmpLoad.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: Sat June 27 05:20:14 2020
End: Sat June 27 05:20:15 2020
/* 05:20:15 Application Phase statistics:
Elapsed time: 00:00:01 (in hh:mm:ss)
0008 LOGOFF;
/* 05:20:16 Logging off all sessions