将数据加载到外部表中

时间:2017-02-17 06:16:58

标签: oracle

我正在尝试将数据加载到外部表。

Sample.txt的

004500323Z  Batman - Earth 1 Batman     Pop!              FUN11494  0  EB  000001080CM0500  2010045003230
004500333Z  NBX - Oogie Boogie Glow     Pop! Keychain !E  FUN11839  0  EB  000000565  2010045003339
004500356Z  Blacklist - Red Reddington  Pop!              FUN10821  0  EB  000001080CM0500  2010045003568

基于位置数据必须加载到外部表中。

外部表格结构

  CREATE TABLE EX_BOOK
   (    "ISBN_10" VARCHAR2(10 BYTE), 
    "AUTHOR_NAME" VARCHAR2(70 CHAR), 
    "BOOK_TITLE" VARCHAR2(150 CHAR), 
    "PUBLICATION_COMPANY_NAME" VARCHAR2(60 CHAR), 
    "PUBLICATION_DATE" CHAR(6 BYTE), 
    "SORT_1" VARCHAR2(3 CHAR), 
    "SELLING_PRICE" VARCHAR2(9 BYTE), 
    "SORT_2" VARCHAR2(7 CHAR), 
    "ISBN_13" VARCHAR2(13 BYTE)
   ) 
   ORGANIZATION EXTERNAL 
    ( TYPE ORACLE_LOADER
      DEFAULT DIRECTORY "DAT_DIR"
      ACCESS PARAMETERS
      ( RECORDS DELIMITED BY "\n" CHARACTERSET ZHS32GB18030 BADFILE BAD_DIR : 'CHINESE_BOOK_MASTER_SIMPLIFIED_%p_%a.bad' LOGFILE LOG_DIR : 'CHINESE_BOOK_MASTER_SIMPLIFIED_%p_%a.log' READSIZE 10485760 FIELDS LRTRIM MISSING FIELD VALUES ARE NULL REJECT ROWS
WITH ALL NULL FIELDS ( "ISBN_10" ( 1: 10) CHAR(10) ,"AUTHOR_NAME" ( 11: 80) CHAR(70) ,"BOOK_TITLE" ( 81: 230) CHAR(150) ,"PUBLICATION_COMPANY_NAME" ( 231: 290) CHAR(40) ,"PUBLICATION_DATE" ( 291: 297) CHAR(6) ,"SORT_1" ( 304: 306) CHAR(3) ,"SELLING_PRICE" ( 307: 315) INTEGER EXTERNAL(9) ,"SORT_2" ( 316: 322) CHAR(7),"ISBN_13" ( 323: 335) CHAR(13))         )
      LOCATION
       ( 'Sample.txt'
       )
    )
   REJECT LIMIT UNLIMITED;

但是在向外部表插入数据时,会附加不必要的空格。

EX_BOOK

ISBN_10     AUTHOR_NAME BOOK_TITLE            PUBLICATION_COMPANY_NAME PUBLICATION_DATE SORT_1 SELLING_PRICE SORT_2
 0 0 4 5 0   0 3 2 3 Z  B a t m a n   -  E a  r t h 1 B a t m a n Pop!  F U N           1 1 

如何在插入数据时消除这些空格?

1 个答案:

答案 0 :(得分:0)

我已将源文件的NLS字符集从 ZHS32GB18030 更改为 16UTF16 ,现在数据已正确加载到外部表。