Java批量insert到Oracle,3万数据要求10秒 如何实现3万数据批量添加到oracle,并且时间在10秒以内。大伙能给个思路么?服务器和数据库在同一台机器上。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个............插入一条数据就一个命令,优化很有限吧.......所以我觉得主要还是看主机CPU跟内存性能.PS:10万条的话就要作弊一下了,要先吧数据读到内存先,才开始记时的话还有可能,如果程序运行就开始记时,我觉得就算你是用SSD都做不到. 你只使用insert还是慢的你可以使用AddBatch一起提交或者感错像ls说的使用存储过程完成 在Hibernate应用中如何处理批量更新和批量删除? http://www.phome.asia/forum/thread/16537.html 三万数据是从哪里来的?1 数据源来自文件、文本数据?1) 性能高 :oracle 有个sqlldr 速度很快 , 你可以在脚本了写好命令,使用JAVA 直接调用这个脚本就可以了2)性能较低:JDBC 批处理命令 2 数据源来自数据库的某个表,例如data_table直接使用 insert into 目标_table select * from data_table 你的ORACLE服务器能够支持10秒3万数据量的处理么?如果只是为了吃一个批量文件,直接用数据库的批量导入命令就好了! 是这样的BS结构 客户端上传Excel 使用JXL解析出来 载入内存(List) 然后再使用JDBC添加或更新到数据库我现在使用的方式是采用批处理 如果数据大于1000条就1000条一提交。1W条数据 JXL解析需要1秒左右 数据库操作1秒左右网络是局域网 服务器 酷睿双核 2G内存 性能和人性化的提示是有矛盾的。比如:1 WEB上,需要检验excel里面的数据是否合法,并提示用户修正数据。2 当执行SQL失败时,你需要使用事务回滚,并提示失败信。3 excel2003数据量行数是有限制的,最多为65553行。一个excel 30000行,看起来已经很头疼了。性能与人性化 两难境地。 1.使用多线程,同时insert2.每次insert一定数量的数据(如1000行)3.insert使用batch模式4.注意管理每次insert的数据,不要重复insert只要数据库承受得起,10秒内3万条应该没有问题。 再次感谢大家的回答第一点:我把JXL再次封装。解析的时候传入条件数组即可判断是否合法并且记录下不合法的数据,返回给用户。第二点:数据库交互开启了事务保证一致性(成功解析的数据也要返回给用户...).第三点:这个没法解决....还有一个让人郁闷的问题JXL和POI数据超过1W5之后有内存溢出问题,设置JVM内存大小也没作用。求解... http://topic.csdn.net/t/20060831/16/4989828.html 使用存储过程,将参数定为数组(就是插入的数据,可以一个参数对一批数据),java调用就可以,正常情况应该用不了10秒 http://blog.csdn.net/lg2512/article/details/6387555 高分求解 maven spring 版本冲突 flash怎么解析jsp传来的数组 UDP客户和服务端 循环发送接收数据 怎么把xml文件转化成Document文件? Mondrian Exception 关于Struts2 标签问题 , 在线等待 !!!!!! lumaqq的源码哪儿有下的 推荐本比较好的数据库书籍和EJB书籍 急! 我lotus.jdbc.domino.DominoDriver连接lotus Domino,为什么只能插入一个文档时域值只能是字母,不能是汉字 求助tomcat启动问题 请教关于hibernate的视图映射? weblogic+ejb3分布式事务!
所以我觉得主要还是看主机CPU跟内存性能.
PS:10万条的话就要作弊一下了,要先吧数据读到内存先,才开始记时的话还有可能,如果程序运行就开始记时,我觉得就算你是用SSD都做不到.
你可以使用AddBatch
一起提交
或者感错像ls说的使用存储过程完成
三万数据是从哪里来的?1 数据源来自文件、文本数据?1) 性能高 :oracle 有个sqlldr 速度很快 , 你可以在脚本了写好命令,使用JAVA 直接调用这个脚本就可以了2)性能较低:JDBC 批处理命令 2 数据源来自数据库的某个表,例如data_table直接使用 insert into 目标_table select * from data_table
如果只是为了吃一个批量文件,直接用数据库的批量导入命令就好了!
BS结构 客户端上传Excel 使用JXL解析出来 载入内存(List) 然后再使用JDBC添加或更新到数据库
我现在使用的方式是采用批处理 如果数据大于1000条就1000条一提交。1W条数据 JXL解析需要1秒左右 数据库操作1秒左右网络是局域网 服务器 酷睿双核 2G内存
性能和人性化的提示是有矛盾的。比如:1 WEB上,需要检验excel里面的数据是否合法,并提示用户修正数据。2 当执行SQL失败时,你需要使用事务回滚,并提示失败信。3 excel2003数据量行数是有限制的,最多为65553行。一个excel 30000行,看起来已经很头疼了。性能与人性化 两难境地。
2.每次insert一定数量的数据(如1000行)
3.insert使用batch模式
4.注意管理每次insert的数据,不要重复insert只要数据库承受得起,10秒内3万条应该没有问题。
第一点:我把JXL再次封装。解析的时候传入条件数组即可判断是否合法并且记录下不合法的数据,返回给用户。
第二点:数据库交互开启了事务保证一致性(成功解析的数据也要返回给用户...).
第三点:这个没法解决....
还有一个让人郁闷的问题JXL和POI数据超过1W5之后有内存溢出问题,设置JVM内存大小也没作用。
求解...