如何实现3万数据批量添加到oracle,并且时间在10秒以内。大伙能给个思路么?
服务器和数据库在同一台机器上。

解决方案 »

  1.   

    这个............插入一条数据就一个命令,优化很有限吧.......
    所以我觉得主要还是看主机CPU跟内存性能.
    PS:10万条的话就要作弊一下了,要先吧数据读到内存先,才开始记时的话还有可能,如果程序运行就开始记时,我觉得就算你是用SSD都做不到.
      

  2.   

    你只使用insert还是慢的
    你可以使用AddBatch
    一起提交
    或者感错像ls说的使用存储过程完成
      

  3.   

    在Hibernate应用中如何处理批量更新和批量删除?  http://www.phome.asia/forum/thread/16537.html
      

  4.   


    三万数据是从哪里来的?1 数据源来自文件、文本数据?1) 性能高 :oracle 有个sqlldr  速度很快 , 你可以在脚本了写好命令,使用JAVA 直接调用这个脚本就可以了2)性能较低:JDBC 批处理命令  2 数据源来自数据库的某个表,例如data_table直接使用 insert into 目标_table select * from data_table
      

  5.   

    你的ORACLE服务器能够支持10秒3万数据量的处理么?
    如果只是为了吃一个批量文件,直接用数据库的批量导入命令就好了!
      

  6.   

    是这样的
    BS结构 客户端上传Excel 使用JXL解析出来 载入内存(List) 然后再使用JDBC添加或更新到数据库
    我现在使用的方式是采用批处理 如果数据大于1000条就1000条一提交。1W条数据 JXL解析需要1秒左右 数据库操作1秒左右网络是局域网 服务器 酷睿双核 2G内存
      

  7.   


    性能和人性化的提示是有矛盾的。比如:1 WEB上,需要检验excel里面的数据是否合法,并提示用户修正数据。2 当执行SQL失败时,你需要使用事务回滚,并提示失败信。3 excel2003数据量行数是有限制的,最多为65553行。一个excel 30000行,看起来已经很头疼了。性能与人性化 两难境地。
      

  8.   

    1.使用多线程,同时insert
    2.每次insert一定数量的数据(如1000行)
    3.insert使用batch模式
    4.注意管理每次insert的数据,不要重复insert只要数据库承受得起,10秒内3万条应该没有问题。
      

  9.   

    再次感谢大家的回答
    第一点:我把JXL再次封装。解析的时候传入条件数组即可判断是否合法并且记录下不合法的数据,返回给用户。
    第二点:数据库交互开启了事务保证一致性(成功解析的数据也要返回给用户...).
    第三点:这个没法解决....
    还有一个让人郁闷的问题JXL和POI数据超过1W5之后有内存溢出问题,设置JVM内存大小也没作用。
    求解...
      

  10.   

    http://topic.csdn.net/t/20060831/16/4989828.html
      

  11.   

    使用存储过程,将参数定为数组(就是插入的数据,可以一个参数对一批数据),java调用就可以,正常情况应该用不了10秒
      

  12.   

    http://blog.csdn.net/lg2512/article/details/6387555