我在java程序中调用sql*load,希望在数据库插入csv中的数据,但运行过后,数据库一点变化也没有。我把命令copy到cmd的运行窗口,他就能正常的插入数据,问一下这是什么原因?
String _cmd = "C:/oracle1/product/10.1.0/Db_1/BIN/sqlldr hyamato/hyamato@hyamato control=c:/ZIPCODE_FIF.ctl";try{
   Process ldr=Runtime.getRuntime().exec(_cmd);
   InputStream stderr = ldr.getInputStream();
   InputStreamReader isr = new InputStreamReader(stderr);
   BufferedReader br = new BufferedReader(isr);
   String line = null;
   while ( (line = br.readLine()) != null)
   {
System.out.println(line);
   }
   stderr.close();
   isr.close();
   br.close();   ldr.waitFor();
}
catch()
{
}

解决方案 »

  1.   

    这console上只print出来这2行字,也没有发生Exception。
    SQL*Loader: Release 10.1.0.2.0 - Production on 金 3月 16 14:33:23 2007
     
    Copyright (c) 1982, 2004, Oracle.  All rights reserved.
      

  2.   

    那到底表数据中有吗??只要导进去就可以了,若表中没有,看下.bad文件里面有吗?我对JAVA不熟悉
      

  3.   

    一张空表,
    .bad文件根本就没生成。
    后来我debug了一下,
    *.ctl中指向的csv文件即使不存在,程序也不会报错,
    奇怪了
      

  4.   

    INFILE 的默认路径在哪里。感觉好象是没找到路径
      

  5.   

    给你一个JAVA调用执行文件的例子http://passmatlab.bokee.com/5077102.html我都没有看到你的EXEC中有START我没有用过JAVA   只是给你个参考
      

  6.   

    String _cmd = "C:/oracle1/product/10.1.0/Db_1/BIN/sqlldr hyamato/hyamato@hyamato control=c:/ZIPCODE_FIF.ctl";这个就是命令了
    不用start的
      

  7.   

    我试了, start 了也不行
      

  8.   

    哈,知道原因了,忘了写这句话,所以exec之前东西没有写到ctl里面
    bufWriter.flush();
    结贴了