2014-07-09 28 views
2

我有以下數據:沒有終止發現終止,圍封后場 - 日期

 
G_ID;"KID";"MG_DATE";"SQTY" 
5697877;"1301633";"06/04/2012";"1" 
5844541;"1301633";"03/04/2012";"1" 
5826002;"1301633";"03/04/2012";"1" 

當我嘗試使用SQL * Loader加載它,我得到以下錯誤:

Record 1: Rejected - Error on table "X"."SALES", column SALE_DATE.
no terminator found after TERMINATED and ENCLOSED field

CTL文件:

OPTIONS (SKIP=1) 
LOAD DATA 
INFILE ... 
BADFILE ... 
DISCARDFILE ... 
INTO TABLE "X"."SALES" 
FIELDS TERMINATED BY ';' optionally enclosed by '"' TRAILING NULLCOLS 
(ITEM_CODE integer, 
LOC_CODE integer, 
SALE_DATE date "dd/mm/yyyy", 
QUANTITY integer) 

請幫我理解什麼是錯誤,數據非常簡單,並且沒有特殊字符。

+0

你應該提供'x.sales'表描述了。 – ntalbs

+0

ITEM_CODE INTEGER NOT NULL, LOC_CODE INTEGER NOT NULL, SALE_DATE DATE NOT NULL, QUANTITY INTEGER – tigrenok00

+0

@ user3819249請不要在評論中添加其他信息 - 編輯您的問題,而不是(使用*編輯*鍵)。 –

回答

1

我稍微修改了控制文件併成功加載。

OPTIONS (SKIP=1) 
LOAD DATA 
INFILE 'sales.dat' 
INTO TABLE "X"."SALES" 
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS 
(
ITEM_CODE, 
LOC_CODE, 
SALE_DATE date "dd/mm/yyyy", 
QUANTITY) 

我覺得你並不需要指定要在控制文件中的數據類型integer,因爲表的列類型是number它會自動將數據轉換爲數字。

當您指定數據類型integer時,看起來sqlldr將數據文件中的列長度視爲4,這會導致錯誤。

如果要指定數據類型,然後使用integer external,而不是隻integer,像這樣:

... 
ITEM_CODE integer external, 
LOC_CODE integer external, 
SALE_DATE date "dd/mm/yyyy", 
QUANTITY integer external) 
+0

非常感謝!有效。東西這麼簡單:)謝謝 – tigrenok00