设为首页
优惠IDC
收藏本站
六狼博客
六狼论坛
开启辅助访问
切换到窄版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
只需一步,快速开始
快捷导航
门户
首页
BBS
云计算
大数据
手机
移动开发android,ios,windows phone,windows mobile
编程
编程技术java,php,python,delphi,ruby,c,c++
前端
WEB前端htmlcss,javascript,jquery,html5
数据库
数据库开发Access,mysql,oracle,sql server,MongoDB
系统
操作系统windows,linux,unix,os,RedHat,tomcat
架构
项目管理
软件设计,架构设计,面向对象,设计模式,项目管理
企业
服务
运维实战
神马
搜索
搜索
热搜:
php
java
python
ruby
hadoop
sphinx
solr
ios
android
windows
centos
本版
帖子
用户
六狼论坛
»
首页
›
数据库开发
›
Oracle
›
使用SQL Loader导入大量数据,避免使用SQL频繁写库 ...
返回列表
查看:
78
|
回复:
0
使用SQL Loader导入大量数据,避免使用SQL频繁写库
[复制链接]
qsjiangs
qsjiangs
当前离线
积分
24
窥视卡
雷达卡
升级
48%
当前用户组为
童生
当前积分为
24
, 升到下一级还需要 26 点。
6
主题
6
主题
6
主题
童生
童生, 积分 24, 距离下一级还需 26 积分
童生, 积分 24, 距离下一级还需 26 积分
积分
24
发消息
楼主
|
发表于 2013-1-14 08:56:35
|
显示全部楼层
|
阅读模式
目前所做的项目需要从一个按行记录的数据文件取出部分字段,再将这些字段的按行存储到Oracle数据库。这些数据大约有2 700 000条,原始数据文件有450M左右。至少有两种方法可以实现:
一.将原始数据文件读进内存流中,每读一行解析一条数据,接着执行一条SQL语句,将解析到的数据插入数据库表;
二..将原始数据文件读进内存流中,每读一行解析一条数据,接着将解析到的数据按行写入一个临时文件data.tmp,待所有数据均被解析完毕且写入临时文件后,调用SQL Loader,将所有数据一次性从临时文件导入数据库表。
一开始是按照第一种方法编程的。在本机(Oracle服务器装在本机)测试顺利通过,但是花了大约150分钟才导入解析和完成;当部署到实际环境中运行时,却出现了问题。跟踪发现是因为网络不稳定(程序所在服务器与数据库服务器处于不同的局域网,由防火墙隔开,做了几个特定端口的路由),有时候连接不到数据库,往往只导入了很少的几千条甚至几百条数据时,数据库就连接不上了。
后来分析,对于大量数据的导入,采用第一种方法会导致频繁写库,每次都要打开数据库(禁用了连接池,后续文章会提到禁用的原因),对数据库造成较大的压力,加上网络环境本来就不够稳定,所以很容易出现问题。于是改用第二种方法。
使用第二种方法后,解析花的时间大约为90分钟,导入则只花了5分钟左右。看来SQL Loader的效率真的很高。
下面讲讲SQL Loader的基本用法。
1、在Oracle中按照导入数据的格式建立一个空表
2、编写一个控制文件control.ctl,内容如下
<div style="font-size: 13px; line-height: 19px; background-color: #e6e6e6; padding-right: 5.4pt; padding-left: 5.4pt; padding-bottom: 4px; width: 1034px; padding-top: 4px;">
LOAD
DATA
INFILE
'
E:\test\data.tmp
'
BADFILE
'
E:\test\data.bad
'
DISCARDFILE
'
E:\test\data.dsc
'
DISCARDMAX
1000
APPEND
INTO
TABLE
"TB_TEST"
FIELDS TERMINATED
BY
'
|
'
TRAILING NULLCOLS
(
USER_ID
,
USER_NAME
,
REG_TIME
DATE(20) "YYYY
-
MM
-
DD HH24:MI:SS"
)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
CentOS
Copyright © 2008-2020
六狼论坛
(https://it.6wolf.com) 版权所有 All Rights Reserved.
Powered by
Discuz!
X3.4
京ICP备14020293号-2
本网站内容均收集于互联网,如有问题请联系
QQ:389897944
予以删除
快速回复
返回顶部
返回列表