引用:http://space.itpub.net/26723566/viewspace-739835
sqlldr的时候字段间隔符是空白的时候,经常使用FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BY x'09'。
FIELDS TERMINATED BY WHITESPACE 是指字段之间不管是空格还是tab,还是两者混合体就作为一个间隔符对待。
FIELDS TERMINATED BY x'09'是指字段之间的间隔符就是tab ,而不是空格;这时如果出现空格,只会把空格作为普通字符处理。
一、实验环境
Windows XP+oracle9i 9.0.1
二、实验思想
1、通过实验对比FIELDS TERMINATED BY WHITESPACE和FIELDS TERMINATED BY x'09'的区别
三、实验设计
1、创建实验表
2、创建控制文件
3、加载数据
四、实验步骤
1、创建实验表
C:\Documents and Settings\Administrator>sqlplus scott/oracle
SQL> create table test3 as select * from dept where 1=2;
2、创建控制文件
LOAD DATA
INFILE *
INTO TABLE test3
REPLACE
-- FIELDS TERMINATED BY WHITESPACE//这里为了对比这两者的区别,我把它定义到下面的表中
-- FIELDS TERMINATED BY x'09'
(DEPTNO TERMINATED BY WHITESPACE ,
DNAME TERMINATED BY x'09',
LOC
)
BEGINDATA
10 Sales Virginia
20 Sales Virginia
30 Sales Virginia
40 Sales "Virginia"
3、装载数据
E:\test>sqlldr scott/oracle control=test.ctl log=test bad=test
SQL*Loader: Release 9.0.1.1.1 - Production on星期六8月4 11:20:42 201
(c) Copyright 2001 Oracle Corporation. All rights reserved.
达到提交点,逻辑记录计数3
达到提交点,逻辑记录计数4
查看表中数据
SQL> select * from test3;
DEPTNO DNAME LOC
---------- -------------- ------------
20 Sales V
30 Sales V
40 Sales "
五、实验小结
由上我们可以知道,当使用FIELDS TERMINATED BY WHITESPACE时,无论是使用空格或者tab键作为分隔符都能够将记录装载成功;但使用FIELDS TERMINATED BY x'09'时只能以tab作为分隔符。
在做上面的实验时loc这一列的值仅插入了一个字符,于是我做了下面这个实验作为对比:
将控制文件改为:
LOAD DATA
INFILE *
INTO TABLE test3
REPLACE
-- FIELDS TERMINATED BY WHITESPACE
-- FIELDS TERMINATED BY x'09'
(DEPTNO TERMINATED BY WHITESPACE ,
DNAME TERMINATED BY x'09',
LOC TERMINATED BY WHITESPACE
)
BEGINDATA
10 Sales Virginia
20 Sales Virginia
30 Sales Virginia
这时再看实验结果:
DEPTNO DNAME LOC
SQL> select * from test3;
DEPTNO DNAME LOC
---------- -------------- -------------
20 Sales Virginia
30 Sales Virginia
40 Sales "Virginia"
发现由于我是在表被指定的分隔符,而loc这列我并没有指定所以就默认将这列的第一个字符装载了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27042095/viewspace-748224/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27042095/viewspace-748224/