首页 > 数据库 > mysql教程 > Oracle sqlldr导入数据使用默认值和提高性能的方法

Oracle sqlldr导入数据使用默认值和提高性能的方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 17:06:39
原创
2188 人浏览过

在实际中常常有大量的数据需要导入到目前的数据库表中,oracle提供的sqlldr命令很好的meet了这个需求。在使用的过程中,我们发现

在实际中常常有大量的数据需要导入到目前的数据库表中,,Oracle提供的sqlldr命令很好的meet了这个需求。在使用的过程中,我们发现,如果在数据库的table端的Column中设置default值,但是使用sqlldr就不会起作用,也就是默认值没有设置成功,所以需要设置默认值得时候,我们将默认值写到了ctl文件中。ctl文件如下:

Load data
infile 'd:\temp\buser.txt' 
Append
into table tmp_temp
TRAILING NULLCOLS
 (
phonenumber ,
addtime sysdate,
remark "suit"
)

在导入大量数据的时候i,sqlldr往往不敬人意,在导入的时候存在效率问题,可以通过一下几种方式提高sqlldr的速度.

1. 使用direct=Y 这是速度提高最快的方式
2. 使用大的readsize/streamsize 提高读写数据的缓冲区的大小
readsize 的最大值为21971520(20M). streamszie的最大值不清楚,我自己一般设置为21971520
3. 使用大的bindsize (只对conventional path load有效) , 提高一次提交的数据量, 效果也比较明显.
4. 使用大的columnarrayrows . Oracle9i的最大值在750000-800000之间,
Number of rows for direct path column array 提高direct load的效率,
5. 使用并行load, 最好运行两个不同的sqlldr程序, 指定每个ctl文件加载不同的内容.
6. 先删除加载表上的索引和约束. 具体效果不是很清楚, 但是, 肯定可以提高加载的速度.
7. 最好将加载表设置成nologging/unrecoverable, 对于conventional path load比较有用, 减少重做日志的写入.
8. 加大date_cache的大小, 在加载表有日期字段的时候能够提高加载的速度.
date_cache -- size (in entries) of date conversion cache  (Default 1000)

linux

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
PHP工具箱链接oracle数据库怎么办
来自于 1970-01-01 08:00:00
0
0
0
数据库数据
来自于 1970-01-01 08:00:00
0
0
0
wamp环境连接oracle数据库
来自于 1970-01-01 08:00:00
0
0
0
数据库
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板