请问一次性有40万到100万的数据要一次性写入库中怎么做效率高?
现在的方法 使用 jdbc  启用它的事务来处理  速度感觉比较慢现在想想是不是用存储过程会比较快一些?    如何写呢?希望高手给与解答
我们表   4个字段   第一个字段 是自增id  使用序列   第二个是标志位 number 型 都是默认0    第三个 是一个批次号 也是一次写库时所有数据相同的 第四个是个 varchar2(11)的 数据 这个每一条都是不一样的       这样的   应该 如何写呢?   
首先说 这个存储过程如何写??
java 如何调这个存储过程并且为这个 存储过程传三参数(是不是传个集合之类当参数会快一些,对应的java应该用啥做参数)项目紧急 希望高手能够拔刀相助!!  万分之感谢

解决方案 »

  1.   

    我是要通过 java 导入 并且   数量不定 
      

  2.   

    那么多的数据量,用java程序太慢了吧,用sql loader导入不成吗?
      

  3.   

    通过java是一种比较慢的导入方式.如果你只想用java做写入,那就需要更多去从java层面去优化了,
    比如使用
        prepareStatement.addBath() ; 
       prepareStatement.excuteBatch() ;   --批量执行.
       con.commit(); 
    如果需要使用procedure,可考虑使用bind变量.
      

  4.   

     因为这个数据是不定的 并且  是需要从远程 通过字节流把一个txt文件读过来,然后由java再以字符流形式 读进每一行数据
    程序中还要加入一些 字段数据     所以必须要用java导入   
    请问   有没有更好的办法??
      

  5.   

    可以在循环外preparestatement,在循环内绑定insert.另一种方式是将文本传入存储过程,由存储过程解析文本,并批量插入。
      

  6.   

    可以考虑ORACLE IO或jdbc 的批量提交
      

  7.   

    sqlldr 也可以用程序处理阿,你把控制文件做好,每次调用替换控制文件里面的文件名就行了