SqlLoader怎么使用

2020-07-10 08:04:34易采站长站整理

replace
(deptno position(1:2),
dname position(3:16),
loc position(17:29),
entire_line position(1:29)
)
begindata
10Accounting Virginia,USA
select * from dept;
1 10 Accounting Virginia,USA 10Accounting
Virginia,USA

使用position时,可以使用相对偏移量,也可以使用绝对偏移量。前面的例子使用了绝对偏移量,明确指定字段从哪开始,从哪结束,也可以将
前面的控制文件改写如下:


load data
infile *
into table dept
replace
(deptno position(1:2),
dname position(*:16),
loc position(*:29),
entire_line position(1:29)
)
begindata
10Accounting
Virginia,USA

    *指示控制文件得出上一个字段在哪里结束。因此,在这种情况下,(*:16)与(3:16)是一样的。注意,控制文件可以混合使用相对位置和绝对位置。
另外,使用*表示法时,可以把它与偏移量相加。例如dname从deptno结束之后的;两个字符开始,可以使用(*+2:16),即相当于(5:16).

    position子句中的结束位置必须是数据结束的绝对列位置。有时,可能指定每个字段的长度更为容易,特别是如果这些字段是连续的。采用这种

  方式,只需告诉sqlldr:记录从第一个字节开始,然后指定每个字段的长度。如下:


load data
infile *
into table dept
replace
(deptno position(1) char(2),
dname position(*) char(14),
loc position(*) char(13),
entire_line position(1) char(29)
)
begindata
10Accounting Virginia,USA
select * from dept;

3、如何加载日期

    使用sqlldr加载日期只需在控制文件中date数据类型,并指定要使用的日期掩码。这个日期掩码与数据库中to_char和to_date中使用的日期掩码一样。

  如修改dept表如下:


alter table dept add last_updated date;
load data
infile *
into table dept
replace
fields terminated by ','
(deptno,
dname,
loc,
last_updated date 'dd/mm/yyyy'
)
begindata
10,Accounting,Virginia,1/5/2000
select * from dept;
1 10
Accounting
Virginia
2000-5-1

4、如何使用函数加载数据

如果想确保加载的数据是大写的,可以改写控制文件如下:


load data
infile *
into table dept
replace
fields terminated by ','
(deptno,
dname "upper(:dname)",
loc "upper(:loc)",
last_updated date 'dd/mm/yyyy'
)
begindata
10,Accounting,Virginia,1/5/2000
select * from dept;
1 10
ACCOUNTING
相关文章 大家在看