2016-05-19 54 views
1

の列をスキップ:これは私が作成した外部テーブルで外部テーブルにロードデータ

CREATE TABLE emp_load 
(
    "ESN_NO" VARCHAR2 (200), 
    "MAKER" VARCHAR2 (30), 
    "HANDSET" VARCHAR2 (20), 
    "MODEL_NO" VARCHAR2 (20), 
    "OMH_TTSL_FLAG" VARCHAR2 (10), 
    "OFFER" VARCHAR2 (100), 
    "STATUS" VARCHAR2 (20), 
    "STATUS_UPDATED_DATE" DATE 
) ORGANIZATION EXTERNAL (
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "EXT_TAB_DIR" ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE skip 1 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    missing FIELD VALUES are NULL 
    ) LOCATION ('BAU.csv') 
) ;       

BAU.csvファイル

ESN No   Make Model RI_value 
A10000428A5348 Lava C180 OFFER14 
A10000428A5349 Lava C180 OFFER14 
A10000428A534A Lava C180 OFFER14 
A10000428A534B Lava C180 OFFER14 

のサンプルコンテンツは、それが正常に動作しますが、データが表示されません私が必要とする列で私は列handsetを空にしたいが、ファイルのmodelの値はhandsetの列にロードされる。だから私は、現在入手:

ESN_NO   MAKER HANDSET MODEL_NO OMH_TTSL_FLAG OFFER STATUS STATUS_UPDATED_DATE 
A10000428A5348 Lava C180  OFFER14              
A10000428A5349 Lava C180  OFFER14              
A10000428A534A Lava C180  OFFER14              
A10000428A534B Lava C180  OFFER14              

私はhandset列がスキップされるとmodelmodel_noに挿入することにしたいです。 omh_ttsl_flagはスキップし、ファイルのri_valueofferに挿入する必要があります。それでは、私が終わるたいのです:

ESN_NO   MAKER HANDSET MODEL_NO OMH_TTSL_FLAG OFFER STATUS STATUS_UPDATED_DATE 
A10000428A5348 Lava   C180      OFFER14        
A10000428A5349 Lava   C180      OFFER14        
A10000428A534A Lava   C180      OFFER14        
A10000428A534B Lava   C180      OFFER14        

外部表にデータをロードしながら、どのようにそれらの列をスキップすることができますか?

+0

@PravinSどのようにuはそれを編集した –

+0

おそらくあなたはすべてのそれらの列で、そのためには、その構造を持っているテーブルが必要です。ファイル値にマップされる4つの列だけで表を作成することはできません。または、ファイルから取得した列の後に空白のままにしておく列をすべて設定しますか? –

+0

また、あなたが現在持っているものと、あなたが正しくしたいものとを解釈していることを確認してください。 –

答えて

0

あなたはfields句の一部として、ファイル内のフィールドを指定すると、表示されないものを指定することでこれを行うことができますthe column transforms clause、例えばと:

COLUMN TRANSFORMS ("HANDSET" FROM NULL, "OMH_TTSL_FLAG" FROM NULL) 

だからあなたの文は次のようになります。

CREATE TABLE emp_load 
(
    "ESN_NO" VARCHAR2 (200), 
    "MAKER" VARCHAR2 (30), 
    "HANDSET" VARCHAR2 (20), 
    "MODEL_NO" VARCHAR2 (20), 
    "OMH_TTSL_FLAG" VARCHAR2 (10), 
    "OFFER" VARCHAR2 (100), 
    "STATUS" VARCHAR2 (20), 
    "STATUS_UPDATED_DATE" DATE 
) 
ORGANIZATION EXTERNAL 
(
    TYPE ORACLE_LOADER DEFAULT DIRECTORY "EXT_TAB_DIR" ACCESS PARAMETERS 
    (
    RECORDS DELIMITED BY NEWLINE skip 1 
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
    MISSING FIELD VALUES ARE NULL 
    (
     "ESN_NO" CHAR (200), 
     "MAKER" CHAR (30), 
     "MODEL_NO" CHAR (20), 
     "OFFER" CHAR (100) 
    ) 
    COLUMN TRANSFORMS 
    (
     "HANDSET" FROM NULL, 
     "OMH_TTSL_FLAG" FROM NULL, 
     "STATUS" FROM NULL, 
     "STATUS_UPDATED_DATE" FROM NULL 
    ) 
) 
    LOCATION ('BAU.csv') 
) ; 

私は他の2つの列を含めましたが、これは必要ではありませんが、あなたが見たいものを文書化するのに役立ちます。ロードすることをCSVに変換あなたのサンプルデータで

set sqlformat ansiconsole 
column esn_no format a20 
select * from emp_load; 

ESN_NO   MAKER HANDSET MODEL_NO OMH_TTSL_FLAG OFFER STATUS STATUS_UPDATED_DATE 
A10000428A5348 Lava   C180      OFFER14        
A10000428A5349 Lava   C180      OFFER14        
A10000428A534A Lava   C180      OFFER14        
A10000428A534B Lava   C180      OFFER14        
0
insert into emp_load (ESN_NO,MAKER,MODEL_NO,OFFER) 
values ('A10000428A5348','Lava','Lava','OFFER14) 

デフォルトはそう他のすべての列がnull受けます、nullである

+0

これは外部テーブルですので、私はいくつかの列をスキップしたいので、私はcreate文でそれを変更する必要があります、私はそれらの変更が必要です –

関連する問題