关于程序调用Sqlldr不出错但数据导入不成功的问题

一般碰到这种问题,都是手工执行命令导入是成功,但用程序调用就不成功了。

我也碰到了同样的问题,而且是在一台机器上程序调用sqlldr好用,在另一机器却不好用了。

仔细分析了一下问题,后来发现手工执行和程序调用的一个区别:

(1)手工执行:一般人都会在CMD下进入到CTL所在的目录,然后调用SQLLDR命令。执行成功。注意此时的当前路径已经在CTL所在的目录了。

(2)程序调用:程序调用时则是用同样的SQLLDR命令去执行,结果发现不报错,但数据却没有导入。注意此时的当前路径是在程序所在的目录下。

 

原因分析:

基于以上分析可看出大部分人执行不成功的原因是CTL中的INFILE路径不对(一般人都用相对路径,如XXX.txt),因为如果程序执行,会在程序的所在目录找数据文件,却找不到,所以失败了。这种情况是不会出错而且不会生成LOG(因为没执行)。

 

另外一个问题:我使用的是绝对路径,在一台机器A上好用,在另外一机器B导入数据不成功,这是怎么回事,想了好半天,发现一个现象:

在机器B上的程序是放在桌面上,生成的数据文件是放在桌面上的。

原因分析:

桌面的路径是:C:/Documents and Settings/XXX/桌面 问题就出在这,路径中有空格就出事了。改到没空格的路径一切正常。

 

 

结论:

INFILE路径设置建议:

(1)最好使用绝对路径,建议由程序动态生成CTL文件

(2)不要带有空格,到于对有空格的路径加上“”,是不是会好用,暂未试验。但加' '是不好用的,这个已经试过。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值