Teradata 简明教程

Teradata - FastLoad

FastLoad 实用工具用于将数据加载到空表中。因为它不使用瞬态日志,所以数据可以快速加载。即使目标表是 MULTISET 表,它也不会加载重复行。

Limitation

目标表不应具有辅助索引、联接索引和外键引用。

How FastLoad Works

FastLoad 分两阶段执行。

Phase 1

  1. 解析引擎从输入文件读取记录,并将一个块发送到每个 AMP。

  2. 每个 AMP 存储记录块。

  3. 然后 AMP 对每个记录进行哈希处理,并将它们重新分配到正确的 AMP。

  4. 在第 1 阶段结束时,每个 AMP 都有自己的行,但它们不在行哈希序列中。

Phase 2

  1. 当 FastLoad 接收 END LOADING 语句时,第 2 阶段开始。

  2. 每个 AMP 根据行哈希对记录进行排序,并将它们写入磁盘。

  3. 目标表上的锁被释放,错误表被删除。

Example

使用以下记录创建一个文本文件,并将该文件命名为 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

下面是一个示例 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;

Executing a FastLoad Script

在创建 input 文件 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 Terms

以下是 FastLoad 脚本中常用的术语列表。

  1. LOGON − 登录到 Teradata 并发起一个或多个会话。

  2. DATABASE − 设置默认数据库。

  3. BEGIN LOADING − 标识要加载的表。

  4. ERRORFILES − 标识需要创建/更新的 2 个错误表。

  5. CHECKPOINT − 定义何时进行检查点。

  6. SET RECORD − 指定输入文件格式为格式化、二进制、文本或非格式化。

  7. DEFINE − 定义输入文件布局。

  8. FILE − 指定输入文件名和路径。

  9. INSERT − 将输入文件中的记录插入到目标表中。

  10. END LOADING − 初始化 FastLoad 的第 2 阶段。将记录分发到目标表中。

  11. LOGOFF − 结束所有会话并终止 FastLoad。