2012-03-07 4 views
0

私は以下のようにテキストファイルのcontaningフィールドを持っています。UNIXシステムからoracleにテキストファイルをロードしています

"64252368","7489040","305762", 
"64285217","8","787341", 

下記のコントロールファイルを使用しています。

OPTIONS (SKIP=1) 
LOAD DATA 
TRUNCATE INTO TABLE test_table 
FIELDS TERMINATED BY '",' 

(
     LEARNEVENT_ID, 
     ORGANIZATION, 
     COURSE_ID 
) 

しかし、私はエラーを取得しています:

Record 1: Rejected - Error on table test_table, column LEARNEVENT_ID 
ORA-01722: invalid number 

は親切にそれに私を助けます。

答えて

0

問題は、単に引用符を削除しません「「引用符で数字のカプセル化を産む」とで終了し、あなたのフィールド」」。

あなたがする必要がある。この

OPTIONS(SKIP=1) 
LOAD DATA 
TRUNCATE INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
TRAILING NULLCOLS 
(
    LEARNEVENT_ID "replace (:LEARNEVENT_ID ,'"', '')", 
    ORGINAZATION "replace (:ORGINAZATION ,'"', '')", 
    COURSE_ID "replace (:COURSE_ID ,'"', '')" 
) 
+0

これは数字だけですが、代わりにBenのソリューションを使用する必要があります。 – Benoit

+0

質問は数字にのみ適用されます。 – GuZzie

2

をお試しくださいOPTIONALLY ENCLOSED BYオプションを含めるようにCTLファイルを変更します。

OPTIONS (SKIP=1) 
LOAD DATA 
TRUNCATE INTO TABLE test_table 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
(
     LEARNEVENT_ID, 
     ORGANIZATION, 
     COURSE_ID 
) 

私はSQL*Loaderreadingをお勧めします。

+0

ありがとうございましたベン、私の制御ファイルに以下のエラーが表示された場合は、同封して使用しようとしています。 TERMINATEDおよびENCLOSEDフィールドの後にターミネータが見つかりません。 –

+0

データがカンマで終わっている場合は、 'TRAILING NULLCOLS'を使います。それがない場合は、この行を削除してください... – Ben

+0

私のデータはコンマで終わります。この場合、どうすればいいのですか? –

関連する問題