SQL*Loader使用说明
Sqlldr直接路径与普通装载区别图
2.2. sqlldr功能描述
1. 可以通过网络客户端连接到服务器,实现远程数据装载。 2. 可以在同一个session装载数据入多个表 3. 可以在同一个session装载多个数据文件 4. 5. 6. 7.
可以指定数据字符集,从而实现不同编码的转化 可以实现对数据选择性的转载
可以通过sql函数来操作数据,实现数据操作性的装载 可以实现唯一序列转载通过制定列
8. 装载数据可以从磁盘,磁带或者命名管道来获取 9. 完整的错误报告描述,可以方便找到出错原因 10. 可以装载复杂的对象关系数据如XML格式数据 11. 提供多种装载方式,insert,apend,direct
5/28
SQL*Loader使用说明
2.3. 命令结构
Sqlldr命令使用比较简单,主要就是程序加参数,就可以实现数据的装载。Sqlldr通过返回值来判断是否装载成功。
在UNIX/LINUX系统下,sqlldr返回值如下: 返回值宏 EX_SUCC EX_FAIL EX_WARN EX_FTL
在Windows NT系统下,sqlldr返回值如下: 返回值宏 EX_SUCC EX_WARN EX_FAIL EX_FTL
各宏值对应的说明: 值宏 EX_SUCC EX_WARN 说明 数据在制定控制范围内成功装载 数据装载存在警告,可能是reject记录数到达等原因,通常出现警告需要查对应的装载日志文件,找出警告原因,查看是否需要重新装载数据 EX_FAIL EX_FTL
语法错误,导致sqlldr无法装载 在装载过程中遭遇到致命错误,可以通过log可以确定发生此种错误的原因 返回值 0 2 3 4 返回值 0 1 2 3 2.3.1. 程序参数
Sqlldr命令参数组要有以下:
userid – 装载使用到的帐号信息,包括数据库信息,格式如:userid=user/passwd@dbname control – 指定装载使用到的控制文件
log - 指定装载使用到的日志文件
bad -指定装载使用到的BAD文件
data -指定装载使用到的数据文件,如果在控制文件中也制定infile文件,那么将优先使用命 令行的data文件,control文件中的第一个infile文件将忽略,如果control文件中只有 一个data文件那么sqlldr将给出一个警告。
discard – discard 文件,不符合转载条件的记录文件 discardmax – 允许discards 数目,默认是全部
6/28
SQL*Loader使用说明
skip – 跳过记录数
load – 指定装载数据的逻辑数目,默认是说有记录。
注:逻辑记录和物理记录的区别:逻辑记录是指导入数据库的记录,物理记录数指文 件中存在的记录。一般情况下逻辑记录跟物理记录相等,但是有些情况下,如,多条 物理记录联合装载,这样可能出现不相等的情况。
errors – 允许出错数目,如果达到出错数就退出装载,默认50
rows – 装载提交数目,普通装载默认64,在直接路径如果没有指定默认为全部记录,通过 这个特性可以用来控制sqlldr的事务一致性。
bindsize – 指定普通转载绑定数组的值,默认256000,该值之适用于普通装载,而不适用于
直接路径装载,因为直接路径装载使用的是直接路径API,而不是普通装载的 insert。设置大的bindsize可以提供每次insert的记录数目。
silent – 提示在装载时候终端上显示的内容,有以下几种可以选择。 Header:禁止sqlldr装载标题提示信息,但在log文件依然出现。 Feedback:禁止\提示信息。
Errors:禁止数据错误信息写在log日志文件,但是rejected records依然会写入。 Discards:禁止在log日志里面的记录信息写入discard文件。
Partitions:在采用直接路径装载的时候,取消写每个分区统计信息入日志文件。 ALL:包含以上所有的值 direct – 使用直接路径装载
parfile – 参数文件指定。
parallel – 并行装载 ,默认为FALSE,只能用于direct装载方式。
file – 指定装载过程中使用的数据库中的数据文件,该选项只适用于并行装载,通过该选项 可以提高磁盘的读写速度。不同的装载可以存放不同的数据库文件。 skip_unusable_indexes –该值跟数据库配置文件中的skip_unusable_indexes类似,在装载过程 中遇到无效索引的时候,不停下来继续进行装载。 skip_index_maintenance –停止索引的维护,在直接路径转载的时候。使用该选项将插入一个 没用的索引键值代替把索引制成无效。这样不会因为前面的转载使 索引无效而影响后面的装载。默认为FALSE。
commit_discontinued – 提交已经装载的行数,如果装载失败的时候。默认为FALSE。 readsize – 该参数用于设置读取数据的大小,如果读控制文件中的值就使用64K大小不变的
值,readsize默认值为1048576,最大可设置的值为20M,在普通装载的情况下, bindsize的大小受限制与readsise的设置,如果readsize的值小于bindsize的值,
sqlldr将会自动让readsize等于bindsize的值。
external_table –使用sqlldr来使用外部表的功能; 本选项提供三个可选项:
NOT_USED:默认为不使用外部表装载功能
GENERATE_ONLY:通过该选项可以生成需要通过外部表装载的所有步骤
EXECUTE:直接使用外部表功能装载
具体说明参见外部表装载
columnarrayrows –该选项适用于direct路径装载,默认为5000。该选项sqlldr将不做技术,如 果使用该选项则需要用户设置正确,或者接受默认的值。 streamsize –该选项为直接路径装载所用,需要跟columnarrayrows配对使用。
multithreading - 在多cpu的系统中默认为TRUE,在单cpu的系统中默认为FALSE。使用多 线程装载在direct path的情况下。推荐使用FALSE,因为在对于大数 据量的转载中,可能出现中途挂起的情况。
7/28
SQL*Loader使用说明
resumable -设定可恢复的空间分配,默认为FALSE。通过该选项可以用于转载过程中空间不足
引起的错误。
resumable_name –该值定义空间使用的语句。默认
'User USERNAME (USERID), Session SESSIONID, Instance INSTANCEID' resumable_timeout – 空间处理时间,默认7200秒。如果在这个时间内没有处理好空间,那
么sqlldr将因为空间不足,而错误退出。该选项需要首先设resumable 为TRUE。
date_cache –用于数据转化的临时空间 默认是1000。本选项只能用于direct路径装载。在需 要数据转化,如date,timestamp类新装载上可以使用,当然如果转换的数据唯
一性很高,可能就很难有作用,对于很多重复的需要转换的比较有用,可以大 大提高转化的时间。
sqlldr的命令行参数可以直接放在命令行,也可以放在控制文件,也可以直接放在参数文件PARFILE (parameter file)里面。
注意:在重复指定的参数里面,命令行的参数凌驾于任何写在参数文件和控制参数文件之上的参数。
2.4. 控制文件
控制文件是用一种规定语言写的文本文件,这个文本文件能被sqlldr读取。sqlldr根据控制文件可以找到需要加载的控制参数及其数据。并且根据控制参数分析和解释这些数据,从而实现数据的装载。
控制文件由三个部分组成:
1,全局选项,即可以用于命令行输入的sqlldr选项,rows,skip 等; 2,INFILE子句指定的输入数据; 3,数据特性说明。
以下将详细讨论控制文件的结构。
2.4.1. 控制文件语法
控制文件编写的语法格式如下:
OPTIONS ( { [SKIP=integer] [ LOAD = integer ] [ERRORS = integer] [ROWS=integer]
[BINDSIZE=integer] [SILENT=(ALL|FEEDBACK|ERROR|DISCARD) ] ) LOAD[DATA] [ { INFILE | INDDN } {file | * }
[STREAM | RECORD | FIXED length [BLOCKSIZE size]| VARIABLE [length] ]
[ { BADFILE | BADDN } file ] {DISCARDS | DISCARDMAX} integr ] [ {INDDN | INFILE} . . . ]
[ APPEND | REPLACE | INSERT ]
8/28

