sqlldr导入数据ORA-01722:invalid number及日期型字段导入

Sqlldr.ctl控制文件如下

options(errors=999,rows=99,silent=(feedback,discards))

load data

 

infile 'sqlldr.dat' "str '\r\n'"

append

into table  scott.emp

fields terminated by ','

trailing nullcols

 

(EMPNO INTEGER EXTERNAL,

ENAME,

JOB,

MGR INTEGER EXTERNAL NULLIF (MGR=BLANKS),

HIREDATE DATE 'YYYYMMDD',

SAL DECIMAL EXTERNAL,

COMM DECIMAL EXTERNAL,

DEPTNO INTEGER EXTERNAL

)

 

Sqlldr scott/tiger@instanceid control=sqlldr.ctl

如果ctl文件中不指定导入的数据文件,即不使用infile指定文件,可使用下列命令

Sqlldr scott/tiger@instanceid control=sqlldr.ctl  data=sqlldr.dat.

 

利用sqlloader导入会出现ORA-01722:invalid number问题;

原因:由于数据文件是在Windows中编辑的,存在换行符,如果integer或者number类型的字段位位于表的最后,最后会有CR/LF的换行符,在使用sqlldr导入的时候换行符也包含在最后一个字段中,使得对应的导入的值与数据库中定义的数据类型不匹配,就会报ORA-01722:invalid number错误。解决方法是在最后一个字段后加TERMINATED BY WHITESPACE,或者在INFILE指点的文件名之后加上 "str '\r\n'"

 

另外,在ctl文件中指定字段类型

CHAR                         字符型

INTEGER EXTERNAL    整型

DECIMAL EXTERNAL    浮点型

DATE 'YYYYMMDD'      日期型

 

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值