紧急 求Oracle批量快速插入数据的方法
客户端将1万条记录打包发送给后台服务,后台服务解析数据包并将数据插入到一个表中,有什么比较快的方法?我已经试过的方法有:1直接拼接成多条Insertinto语句。这种方法...
客户端将1万条记录打包发送给后台服务,后台服务解析数据包并将数据插入到一个表中,有什么比较快的方法?
我已经试过的方法有:
1 直接拼接成多条Insert into 语句。这种方法软解析次数太多,效率太底。
2 将记录插入到一个数组中,然后通过for循环将记录取出来一次插入到数据库中。比方法快了1倍吧。
3 与方法2类似,只是直接用execute immediate 来执行了,效率与2差不多。
方法2与3插入1万条数据都得耗时近15秒。
第二种方法截图 展开
我已经试过的方法有:
1 直接拼接成多条Insert into 语句。这种方法软解析次数太多,效率太底。
2 将记录插入到一个数组中,然后通过for循环将记录取出来一次插入到数据库中。比方法快了1倍吧。
3 与方法2类似,只是直接用execute immediate 来执行了,效率与2差不多。
方法2与3插入1万条数据都得耗时近15秒。
第二种方法截图 展开
4个回答
推荐于2017-06-30 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
向TA提问 私信TA
知道合伙人软件行家
采纳数:925
获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:
向TA提问 私信TA
关注
展开全部
不知道第二种方法你是否使用了forall 子句,应该比普通的for循环快不少,节省很多redo的产生。
还有一种方法,就是使用sql*loader或者外部表的方式。
还有一种方法,就是使用sql*loader或者外部表的方式。
追问
1 我每次构造的SP_O3DataImport存储过程有2500行记录,提交这个存储过程就得耗时4到5秒,但是执行这个存储过程才1秒吧。
2 我导的表数次最多的才3万条左右,sql*loader有点大才小用了。
追答
恩,确实有点大材小用了。
第二种方式使用forall试一下,如果你已经使用了数组,改程序应该很简单。
语法直接这样就行了,不需要使用loop
FORALL i IN VALUES OF rejected_order_tab
INSERT INTO rejected_orders (cust_name, amount)
VALUES (cust_tab(i), amount_tab(i));
试完了,速度怎么样?
展开全部
看下这个帖子
Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
www.askmaclean.com/archives/java-jdbc-batch-update-optimization.html
Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?
www.askmaclean.com/archives/java-jdbc-batch-update-optimization.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要善于运用sqlldr命令,这样的一万行用不了几秒
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sqlldr 后台导数据
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询