2016-11-25 58 views
0

我真的不知道問題出在哪裏。我希望你能幫忙。使用Oracle sql loader加載時出錯

這裏是數據文件:

01/04/2013$1.300 
01/10/2015$0.100 
01/12/2016$0.500 

本文件已在表A中加載:

  • 2列:thedate (type DATE)和therate (type NUMBER(5,3))

這裏是CTL文件:

LOAD DATA 
REPLACE 
INTO TABLE TABLEA 
FIELDS TERMINATED BY '$' 
TRAILING NULLCOLS 
(THEDATE, 
THERATE "to_number(:THERATE, '99999D999', 'NLS_NUMERIC_CHARACTERS=''.,''')") 

加載,我對所有記錄在日誌中這樣的錯誤:

Column Name     Position Len Term Encl Datatype 

THEDATE        FIRST  * $  CHARACTER    
THERATE        NEXT  * $  CHARACTER    
SQL string for column : "to_number(:THERATE, '99999D999', 'NLS_NUMERIC_CHARACTERS=''.,''')" 

記錄1:被拒絕 - 表TABLEA,列THERATE錯誤。 ORA-01438:值大於允許此列

+0

tablea中「THERATE」列的數據類型是什麼? – Boneist

+1

這是完整的數據文件還是隻是一個提取? – Aleksej

+0

必須有更多的數據。給定數據集成功加載。 – JSapkota

回答

1

相同的代碼(只有幾修改,但你的錯誤不相關)指定的精度更大的對我的作品的罰款。

[[email protected] Desktop]$ cat data.txt 
01/04/2013$1.300 
01/10/2015$0.100 
01/12/2016$0.500 

[[email protected] Desktop]$ cat control.ctl 
LOAD DATA 
INFILE 'data.txt' 
REPLACE 
INTO TABLE TABLEA 
FIELDS TERMINATED BY '$' 
TRAILING NULLCOLS 
(THEDATE "to_date(:THEDATE, 'MM-DD-YYYY')", 
THERATE "to_number(:THERATE, '99999D999', 'NLS_NUMERIC_CHARACTERS=''.,''')") 

[[email protected] Desktop]$ sqlldr jay/jay control file=control.ctl 

SQL*Loader: Release 11.2.0.4.0 - Production on Fri Nov 25 16:04:50 2016 

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. 

Commit point reached - logical record count 4 
[[email protected] Desktop]$ sqlplus jay/jay 

SQL*Plus: Release 11.2.0.4.0 Production on Fri Nov 25 16:04:56 2016 

Copyright (c) 1982, 2013, Oracle. All rights reserved. 


Connected to: 
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 
With the Partitioning, OLAP, Data Mining and Real Application Testing options 

SQL> select * from tablea;     

THEDATE  THERATE 
--------- ---------- 
04-JAN-13  1.3 
10-JAN-15   .1 
12-JAN-16   .5