ITPub博客

首页 > Linux操作系统 > Linux操作系统 > FIELDS TERMINATED BY WHITESPACE & FIELDS TERMINATED BY x'09' 区别

FIELDS TERMINATED BY WHITESPACE & FIELDS TERMINATED BY x'09' 区别

原创 Linux操作系统 作者:perfychi 时间:2012-11-02 17:54:07 0 删除 编辑

引用: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博客 ” ,链接:https://blog.itpub.net/27042095/viewspace-748223/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-06

  • 博文量
    484
  • 访问量
    2976213