fields terminated by ',' optionally enclose by '"'它指定用逗号分隔数据字段,每个字段可以用双引号括起。如果把这个控制文件的最后部分修改如下:
fields terminated by ',' optionally enclosed by '"'
(deptno,dname,loc)
begindata
10,Sales,"Virginia,USA"
20,Accounting,"Va,""USA"""
30,Consulting,Virginia
40,Finance,Virginia
select * from dept
1 10 Sales Virginia,USA
2 20 Accounting Va,"USA"
3 30 Consulting Virginia
4 40 Finance Virginia2)另一种常用的格式是制表符定界数据。有两种方法使用terminated by子句来加载这种数据:
terminated by X’09’ –使用十六进制格式的制表符;若用ASCII,制表符应该是9
terminated by whitespace
--使用terminated by whitespace
load data
infile *
into table dept
replace
fields terminated by whitespace
(deptno,dname,loc)
begindata
10 Sales Virginia
select * from dept;
1 10 Sales Virginia
--使用terminated by X'09'
load data
infile *
into table dept
replace
fields terminated by X'09'
(deptno,dname,loc)
begindata
10 Sales Virginia
select * from dept;
1 10 Sales –因为一旦遇到一个制表符就会输出一个值。
因此,将10赋给deptno,dname得到了null,因为在第一个制表符和第二个制表符之间没有数据
3)sqlldr的filler关键字使用
如跳过制表符
load data
infile *
into table dept
replace
fields terminated by X'09'
(deptno,dummy1 filler,dname,dummy2 filler,loc)
begindata
10 Sales Virginia
select * from dept;
1 10 Sales Virginia2、如何加载固定格式数据
要加载定宽的固定位置数据,将会在控制文件中使用position关键字。
load data
infile *
into table dept
replace
(deptno position(1:2),
dname position(3:16),
loc position(17:29)
)
begindata
10Accounting Virginia,USA
select * from dept;
1 10 Accounting Virginia,USA 这个控制文件没有使用terminated by子句;而是使用了position来告诉sqlldr 字段从哪里开始,到哪里结束。
对于position,我们可以使用重叠的位置,可以在记录中来回反复。如下修改dept表:
alter table dept add entire_line varchar(29);并使用如下控制文件:
load data
infile *
into table dept










