1、 SQL*Loader 介绍
SQL*Loader用于高速批量加载某些第三方系统所生成的数据集。
与data pump区别在于:sqlldr能够读取任何文件;sqlldr是一个用户进程。
Sqlldr 文件包括:输入数据文件、控制文件、日志文件、错误文件、废弃文件。
2、 SQL*Loader 命令行选项
C:\Documents and Settings\admin\桌面>sqlldr
SQL*Loader: Release 10.2.0.1.0 - Production on 星期三 4月 18 16:04:16 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
用法: SQLLDR keyword=value [,keyword=value,...]
有效的关键字:
userid -- ORACLE 用户名/口令
control -- 控制文件名
log -- 日志文件名
bad -- 错误文件名
data -- 数据文件名
discard -- 废弃文件名
discardmax -- 允许废弃的文件的数目 (全部默认)
skip -- 要跳过的逻辑记录的数目 (默认 0)
load -- 要加载的逻辑记录的数目 (全部默认)
errors -- 允许的错误的数目 (默认 50)
rows -- 常规路径绑定数组中或直接路径保存数据间的行数
(默认: 常规路径 64, 所有直接路径)
bindsize -- 常规路径绑定数组的大小 (以字节计) (默认 256000)
silent -- 运行过程中隐藏消息 (标题,反馈,错误,废弃,分区)
direct -- 使用直接路径 (默认 FALSE)
parfile -- 参数文件: 包含参数说明的文件的名称
parallel -- 执行并行加载 (默认 FALSE)
file -- 要从以下对象中分配区的文件
skip_unusable_indexes -- 不允许/允许使用无用的索引或索引分区 (默认 FALSE)
skip_index_maintenance -- 没有维护索引, 将受到影响的索引标记为无用
(默认 FALSE)
commit_discontinued -- 提交加载中断时已加载的行 (默认 FALSE)
readsize -- 读取缓冲区的大小 (默认 1048576)
external_table -- 使用外部表进行加载; NOT_USED, GENERATE_ONLY, EXECUTE
(默认 NOT_USED)
columnarrayrows -- 直接路径列数组的行数 (默认 5000)
streamsize -- 直接路径流缓冲区的大小 (以字节计) (默认 256000)
multithreading -- 在直接路径中使用多线程
resumable -- 启用或禁用当前的可恢复会话 (默认 FALSE)
resumable_name -- 有助于标识可恢复语句的文本字符串
resumable_timeout -- RESUMABLE 的等待时间 (以秒计) (默认 7200)
date_cache -- 日期转换高速缓存的大小 (以条目计) (默认 1000)
PLEASE NOTE: 命令行参数可以由位置或关键字指定。前者的例子是 'sqlload
scott/tiger foo'; 后一种情况的一个示例是 'sqlldr control=foouserid=scott/tiger'.位置
指定参数的时间必须早于但不可迟于由关键字指定的参数。例如,允许
'sqlldr scott/tiger control=foo logfile=log', 但是不允许 'sqlldr scott/tiger
control=foo log', 即使参数 'log' 的位置正确。
3、 SQL*Loader 控制文件
控制文件是指示sqlldr如何处理输入文件的文本文件。
3.1定长记录控制文件
Load data
Infile ‘fixed.dat’ “fix 15”
Into table names
Fields terminated by ‘,’
(first,last)
3.2可变长记录控制文件
Load data
Infile ‘names.dat’ “var 3”
Into table names
Fields terminated by ‘,’
(first,last)
3.3流格式记录控制文件
Load data
Infile ‘names.dat’ “str ‘\n’”
Into table names
Fields terminated by ‘,’
(first,last)
4、 数据加载方法
有常规路径加载和直接路径加载两种方法,如果使用直接路径加载必须使用关键字
DIRECT=Y。
5、 实例
5.1 编写一个控制文件a.ctl:
load data
infile 'e:\sqlldr\a.txt'
append
into table s_test
fields terminated by ","
(username,user_id)
5.2 在a.txt文件中输入以下内容:
John,91
Damir,92
Mcgraw,93
5.3 在cmd执行如下命令:
sqlldr system/123 control=E:\sqlldr\a.ctl log=E:\sqlldr\a.log
5.4 查询和确认表中已插入了3条新的记录
Select * from s_test;
6、 常见问题:
常见的主要问题大多是控制文件设置原因,导致加载的数据无法被加载进去。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9537053/viewspace-721569/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9537053/viewspace-721569/