社区
Java EE
帖子详情
Java批量insert到Oracle,3万数据要求10秒
zjwilove4
2010-03-24 12:30:57
如何实现3万数据批量添加到oracle,并且时间在10秒以内。大伙能给个思路么?
服务器和数据库在同一台机器上。
...全文
5511
23
打赏
收藏
Java批量insert到Oracle,3万数据要求10秒
如何实现3万数据批量添加到oracle,并且时间在10秒以内。大伙能给个思路么? 服务器和数据库在同一台机器上。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
23 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
celeron729
2011-11-17
打赏
举报
回复
http://blog.csdn.net/lg2512/article/details/6387555
celeron729
2011-11-17
打赏
举报
回复
1
使用存储过程,将参数定为数组(就是插入的数据,可以一个参数对一批数据),java调用就可以,正常情况应该用不了10秒
jake136
2011-01-29
打赏
举报
回复
批量绑定可以解决这个问题
zjwilove4
2010-03-31
打赏
举报
回复
再次感谢大家的回答
[Quote=引用 15 楼 kaoh1631 的回复:]
性能和人性化的提示是有矛盾的。
比如:
1 WEB上,需要检验excel里面的数据是否合法,并提示用户修正数据。
2 当执行SQL失败时,你需要使用事务回滚,并提示失败信。
3 excel2003数据量行数是有限制的,最多为65553行。一个excel 30000行,看起来已经很头疼了。
[/Quote]
第一点:我把JXL再次封装。解析的时候传入条件数组即可判断是否合法并且记录下不合法的数据,返回给用户。
第二点:数据库交互开启了事务保证一致性(成功解析的数据也要返回给用户...).
第三点:这个没法解决....
还有一个让人郁闷的问题JXL和POI数据超过1W5之后有内存溢出问题,设置JVM内存大小也没作用。
求解...
liu_siat
2010-03-31
打赏
举报
回复
并行处理
海诗美妆
2010-03-31
打赏
举报
回复
1.使用多线程,同时insert
2.每次insert一定数量的数据(如1000行)
3.insert使用batch模式
4.注意管理每次insert的数据,不要重复insert
只要数据库承受得起,10秒内3万条应该没有问题。
Thinking_In_IT
2010-03-31
打赏
举报
回复
[Quote=引用 12 楼 zjwilove4 的回复:]
是这样的
BS结构 客户端上传Excel 使用JXL解析出来 载入内存(List) 然后再使用JDBC添加或更新到数据库
我现在使用的方式是采用批处理 如果数据大于1000条就1000条一提交。
1W条数据 JXL解析需要1秒左右 数据库操作1秒左右
网络是局域网 服务器 酷睿双核 2G内存
[/Quote]
性能和人性化的提示是有矛盾的。
比如:
1 WEB上,需要检验excel里面的数据是否合法,并提示用户修正数据。
2 当执行SQL失败时,你需要使用事务回滚,并提示失败信。
3 excel2003数据量行数是有限制的,最多为65553行。一个excel 30000行,看起来已经很头疼了。
性能与人性化 两难境地。
技术方舟
2010-03-31
打赏
举报
回复
可以用文件形式导入。我想可以满足你的要求。
leavin521
2010-03-31
打赏
举报
回复
http://topic.csdn.net/t/20060831/16/4989828.html
liguangwen86
2010-03-31
打赏
举报
回复
这个得需要测试
zjwilove4
2010-03-30
打赏
举报
回复
谢谢大家的回答
zjwilove4
2010-03-30
打赏
举报
回复
是这样的
BS结构 客户端上传Excel 使用JXL解析出来 载入内存(List) 然后再使用JDBC添加或更新到数据库
我现在使用的方式是采用批处理 如果数据大于1000条就1000条一提交。
1W条数据 JXL解析需要1秒左右 数据库操作1秒左右
网络是局域网 服务器 酷睿双核 2G内存
zoeg
2010-03-30
打赏
举报
回复
你的ORACLE服务器能够支持10秒3万数据量的处理么?
如果只是为了吃一个批量文件,直接用数据库的批量导入命令就好了!
Thinking_In_IT
2010-03-30
打赏
举报
回复
[Quote=引用楼主 zjwilove4 的回复:]
如何实现3万数据批量添加到oracle,并且时间在10秒以内。大伙能给个思路么?
服务器和数据库在同一台机器上。
[/Quote]
三万数据是从哪里来的?
1 数据源来自文件、文本数据?
1) 性能高 :oracle 有个sqlldr 速度很快 , 你可以在脚本了写好命令,使用JAVA 直接调用这个脚本
就可以了
2)性能较低:JDBC 批处理命令
2 数据源来自数据库的某个表,例如data_table
直接使用 insert into 目标_table select * from data_table
kitajima--
2010-03-30
打赏
举报
回复
创建Sequence,
xinqinghaohaohao123
2010-03-30
打赏
举报
回复
在Hibernate应用中如何处理批量更新和批量删除?
http://www.phome.asia/forum/thread/16537.html
lxh.lcl
2010-03-30
打赏
举报
回复
AddBatch
APOLLO_TS
2010-03-26
打赏
举报
回复
我使用本表复制数据,一万条6秒。
xuhesheng
2010-03-26
打赏
举报
回复
你只使用insert还是慢的
你可以使用AddBatch
一起提交
或者感错像ls说的使用存储过程完成
whlcy
2010-03-26
打赏
举报
回复
用存储过程!!!!
加载更多回复(3)
java
批量
插入
Oracle
数据
方法
java
批量
插入方法代码和一些注释
Java
实现mybatis
批量
插入
数据
到
Oracle
Java
实现Mybatis将
数据
批量
插入到
Oracle
中
Oracle
大
数据
量导入(CSV导入)
Oracle
大
数据
量导入 博文链接:https://abe.iteye.com/blog/
10
54515
批量
插入大量
数据
批量
插入大量
数据
,本例子做的是4
秒
插入
10
万
条
数据
。里面的时间和过期时间,插入的
数据
量都可以自己进行设置。
千
万
级
数据
Sql Server 与Mysql分析
真实的
数据
,我的劳动成果!千
万
级
数据
Sql Server 与Mysql分析
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章