命令语句 "sqlldr user/pwd@sid control=a.ctl log=log.txt bad = bad.txt"环境 windows和unix/linux在windows下直接试用cmd命令和unix/linux下直接输入命令都是没有问题,数据完整。通过java代码调用, Runtime.getRuntime().exec("sqlldr user/pwd@sid control=a.ctl log=log.txt bad = bad.txt");windows下也没有问题,但是在unix/linux下会出现数据丢失现象。而且丢失比较有规律,如插入的数据文件超过1W行时时候很容易发生只插入了10560行,但是数据文件是没有错的,如果数据文件格式有错,那在windows下应该会发生同样的问题。网上查了一下,有用Process来调用的执行,我想这个应该跟直接调用runtime应该也没什么关系。而且问题是,当数据丢失后,log.txt文件始终是空的,bad.txt也不会生成。
不知道这个是不是跟我建的表结构、存储大小有关系,但是头痛的是,windows下一点状况都没有,unix/linux下的表也是直接拷贝windows下的表的。不知道有没有哪位朋友也碰到过类似问题,或者估计一下可能会出问题的地方的,先谢了。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【watermms】截止到2008-07-10 12:40:15的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        每贴平均分数:0                        
    回帖的总数量:0                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    补充一下,这个方法是在定时线程中调用,这个想想应该不会有什么关系。因为又绕回了老问题,windows下是OK的,唉,头疼
      

  3.   

    咋滴人气这么差呢。
    刚才写了个shell脚本,直接调用该脚本,也没问题,用java调用改脚本,一样的问题.......................
    救命啊~~~~~~~~~~~~~~~~
      

  4.   

    你把异常抛出来看看会是并发的问题,
    造成有的sql执行没成功吗?
      

  5.   

    我是楼主,不好意思啊,我在朋友的电脑上用他的的账号登录发言:
    光从日志文件文件来看是没有任何异常,而且我专门对那条Runtime.getRuntime().exec("sqlldr user/pwd@sid control=a.ctl log=log.txt bad = bad.txt"); 
    做了一个单独异常捕获。
      

  6.   

    如果跟内存有关,应该直接执行shell脚本的时候,也会出现同样的错误啊