2017-08-02 17 views
0

以下は、入力ファイルからOracleにデータをロードするために使用しようとしているSqlローダー制御スクリプトです。私はデータ型の日付データ型であるCOL3の問題を抱えています。データはファイル内のタイムスタンプ形式です。SQLローダーの日付の問題

エラー「ORA-00907:右括弧がありません」というエラーが表示されます。

load data 
    INFILE 'C:\datafile.txt' 
    INTO TABLE DATATABLE 
    APPEND 
    FIELDS TERMINATED BY '|' 
    (
    COL1, 
    X FILLER, 
    COL2 FLOAT, 
    Y FILLER, 
    Z FILLER, 
    COL3 DATE(10) "TRUNC(TO_TIMESTAMP(:COL3,'MM/DD/YYYY'))", 
    COL4, 
    COL5 "MM/DD/YYYY HH:MI:SS PM") 

// C:\ datafile.txt

1234567|.59999999999999999|.39999999999999999|240.74000000000001|USER1|11/29/2016 12:00:00 AM|USER1|11/29/2016 12:00:00 AM 

私が正しいように思えるSQL以下で出力をテストした:

select TRUNC(to_timestamp('JAN 29 2016 12:00:00 AM', 'MON DD YYYY HH:MI:SS:FF3 PM')) FROM DUAL ; 

任意の助けをいただければ幸いです。

+1

COL3の行に、truncの閉じ括弧がありません。それが唯一の問題だとは確信していませんが、これは明白です – LauDec

+0

ここにコピーしている間、ここにタイプミスがありました。ちょうど編集をしました。 – Learner

答えて

2

load data 
    INFILE 'C:\datafile.txt' 
    INTO TABLE DATATABLE 
    APPEND 
    FIELDS TERMINATED BY '|' 
    (
    COL1, 
    X FILLER, 
    COL2 FLOAT, 
    Y FILLER, 
    Z FILLER, 
    COL3 DATE 'MM/DD/YYYY HH:MI:SS AM', 
    COL4, 
    COL5 DATE 'MM/DD/YYYY HH:MI:SS AM') 

あなたは、データ・ファイルを持っている日付の形式は、タイムスタンプではありません(私は、このコンピュータ上でそれを試すことができない)そのようにしてみてください。これはoracleの通常の日付形式です。したがって、タイムスタンプとしてキャストしようとする必要はありません