Teradata 快速加载
FastLoad 实用程序用于将数据加载到空表中。由于它不使用瞬态日志,因此可以快速加载数据。即使目标表是 MULTISET 表,它也不会加载重复的行。
局限性
目标表不应有二级索引、连接索引和外键引用。
快速加载的工作原理
FastLoad 分两个阶段执行。
Phase 1
-
解析引擎从输入文件中读取记录并向每个 AMP 发送一个块。
-
每个 AMP 都存储记录块。
-
然后 AMP 对每条记录进行哈希处理并将它们重新分配给正确的 AMP。
-
在第 1 阶段结束时,每个 AMP 都有其行,但它们不在行哈希序列中。
Phase 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以下是 FastLoad 脚本中使用的常用术语列表。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以下是 FastLoad 脚本中使用的常用术语列表。13 2016 End : Fri Jan 8 03以下是 FastLoad 脚本中使用的常用术语列表。14 2016 **** 03以下是 FastLoad 脚本中使用的常用术语列表。14 Application Phase statistics: Elapsed time: 00:00:01 (in hh:mm:ss) 0008 LOGOFF; **** 03以下是 FastLoad 脚本中使用的常用术语列表。15 Logging off all sessions
快速加载条款
以下是 FastLoad 脚本中使用的常用术语列表。
-
LOGON : 登录 Teradata 并启动一个或多个会话。
-
DATABASE : 设置默认数据库。
-
开始加载 :标识要加载的表。
-
错误文件 :标识需要创建/更新的2个错误表。
-
检查点 :定义何时采取检查点。
-
创造纪录 :指定输入文件格式是格式化的、二进制的、文本的还是无格式的。
-
DEFINE :定义输入文件布局。
-
FILE :指定输入文件名和路径。
-
INSERT :将输入文件中的记录插入到目标表中。
-
结束装载 : 启动 FastLoad 的第 2 阶段。将记录分布到目标表中。
-
LOGOFF :结束所有会话并终止FastLoad。