欢迎投稿

今日深度:

Flastload (一) 转,

Flastload (一) 转,


1. 简介:
Teradata 作为数据仓库行业的老大,其对数据并行处理能力令人钦佩,而Fastload 工具填充数据的速度绝对可以让任何人惊讶。本文就Fastload 工具的使用作一介绍,希望能帮助读者快速掌握这个工具的使用。
Fastload 支持批处理的脚本编写方式,也支持交互式的方式。其功能就是从数据文件中把大批数据快速插入Teradata 数据库。在数据仓库建设阶段对ETL是非常重要的手段,平均比其他第三方ETL 工具快3 倍以上。


另外Fastload也提供了错误-恢复执行功能,能够继续先前由于各种原因停下来没有完成的工作。
Fastload 能够从主机、专线、或者一般的TCP/IP 连接的计算机节点上运行。
使用限制:必须是空表,并且该表上没有外健,也没有除了UPI 或者NUPI 以外的索引。还有要注意的一点,
就是即使要上载的表是MULITISET(允许重复纪录)的,FASTLOAD 也不会将重复的纪录装入。


2. Fastload 运行过程介绍
共有2 个步骤,数据装载和数据排序过程
装载过程:接收从数据源文件传来的大量数据,并且按照HASH 算法把数据进行分布,分布到对应的AMP 里面去。
数据记录被写入没有排序的数据块中。
数据排序:把装载步骤生成的大量数据块进行排序操作,并且把数据块写入磁盘。
3. 支持的文件格式
在使用FASTLOAD 时候,数据源文件有很严格的规则。
FASTLOAD 支持5 种文件格式
a) DATA 文件:使用FASTEXPORT 或者BTEQ 生成的数据文件。(用.export data file=… 命令生成)。
b) INDICDATA 文件: 和第一种的区别在于文件包含了NULL 的信息(用.export indicdata file=…命令生成)。
c) VARTEXT 文件:变长的纪录字段,每个字段之间用某个特定的字符分隔。
d) 无格式文件:需要指定某个字段的起始位置和长度,还要指定换行符的长度
(需要注意的是UNIX 里面用一个字节长度表示换行,WINDOWS 里面是2 个)
例如文件格式为:
+470000000542+0010+470000000659+Jan 01 2003+
+470000000543+0011+470000000660+Jan 11 2003+
+470000000544+0012+470000000661+Jan 23 2003+
就必须这样定义字段(WINDOWS 环境)
define
SERV_ID (char(12)), deliml(char(1)),
CUST_ID (char(4)), delim2(char(1)),
CONTRACT (char(12)), delim3(char(1)),
C_DATE (char(11)), delim4(char(1)),
newlinechar(char(2))
e)二进制文件:用得比较少。
4. Fastload 的.Begin Loading 命令介绍
.begin loading dbname.tablename errorfiles dname.e1,dname.e2,checkpoint 1000 indicators;
dbname 表示要装入的数据库名称
tablename 表示要装载的表的名称(必须已经存在)
e1 和e2 可以随意指定(不能和数据库中已经存在的对象重名)用来记录当FASTLOAD 不成功时候的错误信息,
对应错误的数据包等信息,并且能够利用这2 个表进行一旦出现上传友问题时候,不用全部重新开始上传的恢复机制。
Checkpoint 1000 表示每1000 条记录检查一次,在第一步骤暂停情况下,可以不用重新从第一条记录开始,而从最
后一次检查点处继续装载过程。
Indicators 表示当数据文件里面有表示空子段的标示时,可以保留空子段。前提是要上传的文件时使用fastexport 或者
bteq 的 .import indicdata file=…;方式生成的数据文件。
5. Fastload 的“错误恢复执行”功能
a)如果数据在装载过程出错(数据库空间不够或者用户中止程序的执行等),在排除错误后可以重新执行FASTLOAD 脚本,
如果指定了CHECKPOINT 参数,数据将在通过CHECKPOINT 点处开始继续装载。如果没有指定CHECKPOINT,系统将不知道从
哪里开始是准确的,从第一条开始重新装载。
b)多次装载,这个功能非常有用,比如要装载的表的内容在2 个文件中,就应该采用该功能。如果在一个脚本中执行了
BEGIN LOADING 但是没有ENDLOADING 语句,并且没有任何错误。装载将停下来,等待用户选择装载下个一个文件或者执
行END LOADING 语句。
c)如果程序在第二阶段出错,只要简单的执行BEGIN LOAGING 和END LOADING命令即可,这样将重新第二阶段的运行。
6. Fastload 交互方式常用命令
HELP;可以看到FASTLOAD 的全部语法
SHOW;可以查看由DEFINE 命令定义的字段格式
HELP TABLE TNAME;比较有用,可以不用对字段进行逐一定义,省略DEFINE语句。
CLEAR;清除上面所有DEFINE 的定义
另外DEFINE 的内容可以叠加,可以定义若干字段之后,HELP TABLE 这时候SHOW之后就会发现定义的内容是
DEFINE命令和HELP TABLE命令的全部内容。
7. Sessions 命令说明
sessions 指定了同时连接TERADATA 服务器的进程数目,
sessions 命令的语法是 sessions max min;
限制条件是最多可以指定与AMP 个数相同个session,如果大于AMP 个数,将按照AMP 个数进行处理。
Sessions *;表示将用系统的AMP 个数进行操作。
题外话:session 命令在不同的工具中有不同的写法,多个session 不一定好,对fastload 来说,session
多一些很有好处,但是对于需要进行全表扫描的操作多个session 仍然会造成session 的顺序执行,同时浪费资
源,降低系统的性能。例如bteq 里面如果需要在没有索引的字段上进行对某条记录的查询,就不要用多个session.
8. Fastload 脚本例子和说明(其中数据源文件的格式是变长纪录的文本文件)
sessions 4;
errlimit 25;
/*登陆服务器,要修改hosts 文件格式为增加一行 teracop1 10.10.10.10 */
logon tera/qin,qin;
/*创建要插入的空表*/
create table qin.mb_nbr (
SERV_ID varchar(12),
CUST_ID smallint,
CONTRACT varchar(12),
C_DATE date
)unique primary index(SERV_ID);
/*设置源文件的格式为变长的字符串,并且每个字段用’:’分隔*/
set record vartext ":" ;
/*定义要传入的表的字段格式和数据文件名称*/
define
SERV_ID (varchar(12)),
CUST_ID (smallint),
CONTRACT (varchar(12)),
C_DATE (date ,NULLIF=0)
) file=e:MB_SERV_ACC_NBR;
/*显示上面的定义*/
show;
/*开始装载数据*/
begin loading mb_nbr errorfiles qin.e1, qin.e2 checkpoint 1000;
insert into qin.mb_nbr(
:SERV_ID,
:CUST_ID,
:CONTRACT);
/*结束装载并退出*/
end loading;
logoff;
9. 执行的片断,从中可以清楚地看到FASTLOAD 的2 个阶段。
C:_fastload>fastload <fl_in.ctl >fl_out.txt ( <表示输入脚本, >表示
输入屏幕内容)
**** 16:57:45 Number of recs/msg: 232
**** 16:57:45 Starting to send to RDBMS with record 1
**** 16:57:51 Starting row 100000
**** 16:57:59 Starting row 200000
**** 16:58:07 Starting row 300000
**** 16:58:14 Starting row 400000
**** 16:58:22 Starting row 500000
**** 16:58:32 Starting row 600000
**** 16:58:43 Starting row 700000
**** 16:58:48 Sending row 747882
**** 16:58:48 Finished sending rows to the RDBMS
==============================================================
= End Loading Phase =
==============================================================
0010 end loading;
**** 17:00:55 END LOADING COMPLETE
Total Records Read = 747882
Total Error Table 1 = 0 ---- Table has been dropped
Total Error Table 2 = 0 ---- Table has been dropped
Total Inserts Applied = 747882
Total Duplicate Rows = 0
Start: Thu Sep 04 16:58:50 2003
End : Thu Sep 04 17:00:55 2003
0011 logoff;
==============================================================
= Logoff/Disconnect
==============================================================
**** 17:01:05 Logging off all sessions
**** 17:01:05 Total processor time used = '11.1761 Seconds'
. Start : Thu Sep 04 16:57:40 2003
. End : Thu Sep 04 17:01:05 2003
. Highest return code encountered = '0'.
**** 17:01:05 FDL4818 FastLoad Terminated

www.htsjk.Com true http://www.htsjk.com/teradata/35702.html NewsArticle Flastload (一) 转, 1. 简介: Teradata 作为数据仓库行业的老大,其对数据并行处理能力令人钦佩,而Fastload 工具填充数据的速度绝对可以让任何人惊讶。本文就Fastload 工具的使用作一介绍...
相关文章
    暂无相关文章
评论暂时关闭