Oracle建立外部表格

來源:互聯網
上載者:User
CREATE TABLE Extnl_Table

   (

        Col01 varchar2(100),

        Col02 Number,

        ......

   )
   ORGANIZATION EXTERNAL
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "XXX"
      ACCESS PARAMETERS
      ( RECORDS DELIMITED BY 0X'0A' SKIP 1 fields terminated by ',' enclosed by '"' LRTRIM MISSING FIELD VALUES ARE NULL REJECT ROWS WITH ALL NULL FIELDS
    )
      LOCATION
       ( "CJ_DIR":'data.txt'
       )
    )

  ;

 

外部表格的定義關鍵是Oracle Loader參數,Records關鍵字後定義如果識別資料行,Fields關鍵字後定義如果識別欄位,常用的如下:

 Records:

       DELIMITED BY 'XXX' —— 分行符號,常用newline定義換行,如果檔案中使用了特別的字元就要另外定義了;如果是特殊符號,可以使用OX'十六位值',例如tab(\t)的十六位是9,那麼就是DELIMITED BY 0X'09';cr(\r)的十六位是d,那麼就是DELIMITED BY 0X'0D'。

       SKIP X —— 跳過X行資料,有些檔案中第一行是列名,需要跳過第一行,則使用SKIP 1。

Fields:

       TERMINATED BY 'x' —— 欄位分割符。

       ENCLOSED BY 'x' —— 欄位引用符,包含在此符號內的資料都當成一個欄位。例如一行資料格式如:"abc","a""b,""c,"。使用參數TERMINATED BY ',' ENCLOSED BY '"'後,系統會讀到兩個欄位,第一個欄位的值是abc,第二個欄位值是a"b,"c,。

       LRTRIM —— 刪除空白字元。

       MISSING FIELD VALUES ARE NULL —— 空缺值都設為Null。

 

如果外部表格檔案的欄位長度和分割符不確定,可以開啟檔案看看。但是如果檔案非常大,比如用十幾G,用UltraEdit之類的工具開啟也許會等十幾個小時。那麼可以使用分割檔案的工具將檔案切割成1M左右的小檔案,再用記事本開啟,複製幾行資料出來作測試用。

 

讀取外部表格時最常見的問題就是報Buffer不足了,如果增大Read Size還不能解決問題,可能就是斷行錯誤,也許是分行符號不對。因為有些分行符號在記事本中看不出來,比如說Windows的分行符號是\n\r,而Mac等系統中是Line Feed(LF, 0x0A)。如果在Windows中開啟帶LF的檔案,記事本中顯示的是一個黑色的方塊,而寫字板中是能夠顯示正確的換行。所以最好使用UltraEdit開啟,直接看16進位代碼,使用DELIMITED BY 0X'xx'斷行。

 

還有可能在從外部表格讀取資料時,讀取前面的資料沒問題,讀到一定的行數就報錯。這可能是某行資料出問題導致。只是可以在外部檔案目錄下發現檔案名稱帶有"BAD"的記錄檔,其中就儲存了出錯的資料,有記事本開啟看看那裡出錯,是否與外部表格定義衝突。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.