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。