Oracle如何快速、大量的插入数据

1 篇文章 0 订阅
0 篇文章 0 订阅

测试说明:

创建一张表,5个字段,均是varchar(20)

sql 中脚本格式均是INSERT INTO 表名称 VALUES (值1, 值2,....)

sqlldr为oracle官方提供的导入工具,大家可自己搜索得知。

执行sql脚本的工具用的是Oracle的SQLDeveloper。

/first time: 空表
noIndex:
@/Users/Johson/Desktop/insertno.sql; 112s

useIndex:
@/Users/Johson/Desktop/insertuse.sql; 109s

sqlldr:
to TABLENOINDEX 2s
to TABLEUSEINDEX 2.8s

/second time:9w的数据量
noIndex:
@/Users/Johson/Desktop/insertno.sql; 104s

useIndex:
@/Users/Johson/Desktop/insertuse.sql; 106s

sqlldr:
to TABLENOINDEX 2s
to TABLEUSEINDEX 2.8s

/third time:150w的数据量
noIndex:
@/Users/Johson/Desktop/insertno.sql; 98s

useIndex:
@/Users/Johson/Desktop/insertuse.sql; 102s

sqlldr:
to TABLENOINDEX 2s
to TABLEUSEINDEX 2.8s

/fouth time:160w的数据量
noIndex:
@/Users/Johson/Desktop/insertno.sql; 98s

useIndex:
@/Users/Johson/Desktop/insertuse.sql; 102s

sqlldr:
to TABLENOINDEX 2s
to TABLEUSEINDEX 2.8s
插入 1143012 只用了17s

/

**总结一下,sqlldr的插入速度远高于我们任何一种单行插入的方式方法。他们远不在一个数量级上,最笨的方式又被无情的甩掉了几条街。


/发现我们的劣势很大,研究sqlldr
改写sql脚本格式:
INSERT INTO `Table` (`user_id`, `user_name`) VALUES
(1, 'dsf'),
(2, 'fgy'),
(3, 'faad');


noIndex:
@/Users/Johson/Desktop/insertno.sql; 8s

useIndex:
@/Users/Johson/Desktop/insertuse.sql; 9s

**** 


看到没,速度终于提升上去了,从100s左右缩小到了10s内,目测看其中大概有至少5秒浪费在SQLDeveloper语法检查上,Oracle数据库自身处理速度绝对小与5s,所以sqlldr肯定就是用这个特殊的写法提高数据导入速度。。这个insert写法,发现是不符合SQL标准的,目前得知的只有ORACLE自身支持。数据库连接工具换成其他的如Navicat,发现根本不识别这种特殊的写法。辛苦了一个晚上,算是有所收获吧!自己安慰一下!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值