楼主: earth2mars

有没比SQL*LOADER更快的文本数据导入方法?

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
11#
发表于 2012-11-11 03:02 | 只看该作者
earth2mars 发表于 2012-11-10 21:34
外部表可以建成压缩表么?

不行,文本压缩了就认不出来了。即使支持的话肯定也要先解开。你为什么要用压缩?
目标表当然是可以压缩的。

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2012-11-12 10:26 | 只看该作者
newkid 发表于 2012-11-11 03:02
不行,文本压缩了就认不出来了。即使支持的话肯定也要先解开。你为什么要用压缩?
目标表当然是可以压缩 ...

我一个山寨项目就是用 oracle javasource 来unzip压缩包,然后用外部表导入txt文本入库的,
速度还可以,不用并行,百万级的数据,是select insert百万级的堆表速度的2/3.

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
13#
发表于 2012-11-14 16:10 | 只看该作者
本帖最后由 yulihua49 于 2012-11-14 16:24 编辑

有。
批量导入,多批commit一次(sqlldr是每批commit一次);
多线程导入(必须是多核服务器)。
如果是异地文件导入,可以使用中间件,将文件多线程压缩后传到数据库服务器,多线程解压导入。百兆网比sqlldr快。千兆网不一定,但也有好处,同一个网可以容纳更多的作业量。
我们现在就是这些方法,都比sqlldr快。

使用道具 举报

回复
论坛徽章:
11
2012新春纪念徽章
日期:2012-01-04 11:56:19技术图书徽章
日期:2017-11-10 14:15:52罗罗诺亚·索隆
日期:2017-08-30 13:50:35马上有钱
日期:2015-02-09 13:21:28优秀写手
日期:2014-12-24 06:00:14蛋疼蛋
日期:2014-12-01 15:24:16比亚迪
日期:2013-09-02 15:14:362013年新春福章
日期:2013-02-25 14:51:24蛋疼蛋
日期:2012-11-18 10:54:53ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14
14#
发表于 2012-11-14 16:18 | 只看该作者
文本文件先导入数据库然后处理插入到表中
可以参考下怎么把excel导入到表中方法

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-04-05 06:00:00
15#
 楼主| 发表于 2012-11-20 22:30 | 只看该作者
yulihua49 发表于 2012-11-14 16:10
有。
批量导入,多批commit一次(sqlldr是每批commit一次);
多线程导入(必须是多核服务器)。

谢谢,具体怎么做呢?

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
16#
发表于 2012-11-21 05:23 | 只看该作者
yulihua49 发表于 2012-11-14 16:10
有。
批量导入,多批commit一次(sqlldr是每批commit一次);
多线程导入(必须是多核服务器)。

sqlldr也可以指定commit的批次大小。
你说的这些用外部表都可以轻松做到。

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2012-11-21 08:50 | 只看该作者
挑战极限的人无处不在啊

使用道具 举报

回复
求职 : 系统架构师
论坛徽章:
184
现任管理团队成员
日期:2011-05-07 01:45:082015年新春福章
日期:2015-03-06 11:57:31懒羊羊
日期:2015-03-04 14:48:16马上有车
日期:2015-02-03 15:49:36马上加薪
日期:2014-11-14 21:57:36itpub13周年纪念徽章
日期:2014-09-27 21:15:55马上有钱
日期:2014-06-16 15:55:42马上有房
日期:2014-06-16 15:55:42问答徽章
日期:2014-04-19 09:26:09马上有房
日期:2014-04-01 21:27:12
18#
发表于 2012-11-21 10:17 | 只看该作者
应该有,直接写数据块,就是直接写在文件里,跳过oracle

使用道具 举报

回复
论坛徽章:
14
2009新春纪念徽章
日期:2009-01-04 14:52:28沸羊羊
日期:2015-03-04 14:51:52优秀写手
日期:2014-03-14 06:00:13马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15蜘蛛蛋
日期:2012-06-27 21:08:142012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26
19#
发表于 2012-12-3 12:56 | 只看该作者
本帖最后由 yulihua49 于 2012-12-3 13:14 编辑
earth2mars 发表于 2012-11-20 22:30
谢谢,具体怎么做呢?


今天结果出来了。
2个数据库服务器做RAC,光纤磁盘阵列做RAID10。
3个应用服务器,每个16线程做计算,通过一个队列将数据提交给一个数据库连接。做批量插入,每批1000记录。
一个管理服务器,负责读文件,发送给3个应用服务器。

单个应用服务器相当于一个sqlldr,每秒可加载10000个记录(记录比较大)。
3个每秒27535记录。


使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24优秀写手
日期:2014-04-05 06:00:00
20#
 楼主| 发表于 2012-12-3 13:45 | 只看该作者
本帖最后由 earth2mars 于 2012-12-3 13:46 编辑
yulihua49 发表于 2012-12-3 12:56
今天结果出来了。
2个数据库服务器做RAC,光纤磁盘阵列做RAID10。
3个应用服务器,每个16线程做计算, ...


如果仅仅是每秒加载数据几万行是不快的
sqlldr每秒可以加载20万行,笔记本,行长200字节

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表