紧急 求Oracle批量快速插入数据的方法

客户端将1万条记录打包发送给后台服务,后台服务解析数据包并将数据插入到一个表中,有什么比较快的方法?我已经试过的方法有:1直接拼接成多条Insertinto语句。这种方法... 客户端将1万条记录打包发送给后台服务,后台服务解析数据包并将数据插入到一个表中,有什么比较快的方法?
我已经试过的方法有:
1 直接拼接成多条Insert into 语句。这种方法软解析次数太多,效率太底。
2 将记录插入到一个数组中,然后通过for循环将记录取出来一次插入到数据库中。比方法快了1倍吧。
3 与方法2类似,只是直接用execute immediate 来执行了,效率与2差不多。

方法2与3插入1万条数据都得耗时近15秒。
第二种方法截图
展开
 我来答
renfengjun1986
推荐于2017-06-30 · 知道合伙人软件行家
renfengjun1986
知道合伙人软件行家
采纳数:925 获赞数:1553
中国地质调查局特聘数据库专家 CSDN博客专家 百度知道数据库行家 炼数成金版主 想了解更多请关注我的博客:

向TA提问 私信TA
展开全部
不知道第二种方法你是否使用了forall 子句,应该比普通的for循环快不少,节省很多redo的产生。

还有一种方法,就是使用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));

试完了,速度怎么样?
百度网友07553bf0
2014-01-21 · TA获得超过1986个赞
知道大有可为答主
回答量:2464
采纳率:75%
帮助的人:1866万
展开全部
看下这个帖子
Java Jdbc减少交互提升批量处理性能,到底该如何优化才好?

www.askmaclean.com/archives/java-jdbc-batch-update-optimization.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tj_angela
2017-06-30 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2571万
展开全部
要善于运用sqlldr命令,这样的一万行用不了几秒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
易二少爷
2014-01-21
知道答主
回答量:57
采纳率:0%
帮助的人:18.1万
展开全部
sqlldr 后台导数据
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式