FIELDS TERMINATED BY WHITESPACE & FIELDS TERMINATED BY x'09' 區別

perfychi發表於2012-11-02

引用: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 WHITESPACEFIELDS 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星期六84 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-748223/,如需轉載,請註明出處,否則將追究法律責任。

相關文章