sqlldr使用及参数说明

sqlldr使用

sqlldr 使用:
sqlldr是oracle提供的一个比较好用的平面文件数据倒入工具,可以倒入带有格式的数据等比较规范的文本文件。
加载方式有:传统路径(conventional path),利用sql插入为我们加载的数据和直接路径(direct path)。
必需要有一个 数据文件和一个控制文件,日志文件可选(不指定的话,会自动生成的)。
数据文件的分隔符需要指定合适,否则会出现混乱。控制文件是告诉sqlldr数据文件和表的对应关系以及一些处理规则

命令:
Sqlldr userid=user/password@SID control=loader.ctl log=loade.log bad=loader.bad

Sqlldr 这个是应用程序的命令,pr_tmp 表对应的user,control控制文件,log日志,bad不合法的数据。


loader.ctl例子:
load data
infile 'd:/pr.csv' "str X'78696179756C61690D0A'"
into table pr_tmp
fields terminated by "," OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS
(ID char(256) ,MID char(256),SUBT char(256),KS char(512),DES char(4000),SY char(256),CM char(256),PC char(512),EID char(256),OD char(256));

其中 "str X'78696179756C61690D0A'" 是指定以什么样的符号作为结束的。78696179756C61690D0A 这串字符的生成方式:
select utl_raw.cast_to_raw('xiayulai'||chr(13)||chr(10)) from dual;意思是以xiayulai加回车换行结束。这里要注意,xiayulai||chr(13)||chr(10)并不能被load到数据库中去。
这样就可以处理换行但是并不是一条记录的结束的平面文件,也就是有回车格式的文件。
fields terminated by "," 这个是指每个字段的结束符,OPTIONALLY ENCLOSED BY '"' 表示""之间的是一个字段,
但是如果不指定换行符又遇到换行符时会错。
TRAILING NULLCOLS 是指定空的单元格用null填充。
控制文件中MID char(256) 的长度默认是256,如果需要指定的话,可以如上指定,但是最好是指定的长一点,因为平面文件中经常会出现一些比较长的字段,
先贤倒入数据库再说,否则报错就不好了。
默认是insert ,可以是append,replace.

execl 文件先另存为以逗号为间隔的csv文件。

 

以下是sqlldr.exe的参数说明:

有效的关键字:
userid --    ORACLE username/password
control -    控制文件
log -        记录的日志文件
*            表示数据文件在控制文件之后,如果是独立的数据文件,则把文件代替*
bad -        坏数据文件,记录错误的未加载数据
data -       数据文件,* data参数只能指定一个数据文件,如果控制文件也通过infile指定了数据文件,并且指定多个,
             则sqlldr在执行时,先加载data参数指定的数据文件,控制文件中第一个infile指定的数据文件被忽略,
             但后续的infile指定的数据文件继续有效
discard -    丢弃的数据文件,默认情况不产生,必须指定
discardmax - 允许丢弃数据的最大值        (全部默认)
skip --      跳过记录数,从数据文件中,从第一行开始要计算要跳过的行数,*,对于多表加载的情况,如果有when条件
             判断的话,或者直接路径下的多表加载,如果要加载的记录数不同,则该参数无效.
load --      给你一万行的数据,却只要求你导入10行
errors -     允许的错误记录数,超过则终止任务         (默认50)
rows --      常规路径导入时:指绑定数组中的行数;直接路径导入时,指一次从数据文件只读取的行数,该参数同时
             受bindsize制约,如果rows*每行实际占用大小超出bindsize最大可用值,则rows自动降低达到bindsize
                          最大可用值(每次提交的记录数,默认: 常规路径 64, 所有直接路径)
bindsize -- 为绑定数组指定的最大可用空间,用来存贮一次读取的rows的记录,该值不能太小,至少要放入一条逻辑记录
             但设置太大也没什么作用。 每次提交记录的缓冲区的大小(字节为单位,默认256000)
             bind array size=(number of rows)*(sun(fixed field lengths)+sum(maximum varying field lengths)+((number of varying 
                          length fields)*(size of length indicator)))
silent --    禁止输出信息 (header,feedback,errors,discards,partitions)
             sqlldr scott/scott control=ldr_case9.ctl silent=header 这样就可以不输出头部信息了.
direct -     使用直通路径方式导入,不走buffer cache,通过direct path api发送数据到服务器端的加载引擎,加载
             引擎按照数据块的格式处理数据并直接写向数据文件,因此效率较高(默认FALSE)
parfile --   高密度的sqlldr导入,省得写参数,就建个脚本吧
parallel -- 并行导入 仅在直接路径加载时有效                  (默认FALSE)
file --      并行加载时会用到该参数,指定file参数,要加载的内容即只向指定的数据文件写入数据,减少i/o
skip_unusable_indexes--        默认为false,如果是true,则加载完数据时,就算此表索引不可用,数据加载完不会改变此索引状态 
              oracle 数据库中也有此同名参数,但顺序是先看sqlldr,再数据库
skip_index_maintenance--    是否跳过索引维护,默认false,直接路径加载有效,如果设置为true,因加载完数据不维护索引,
                因此索引会失效.
readsize----    缓冲区大小,默认值:1048576单位字节,最大不超过20m,该参数仅当从数据文件读取时有效,
              如果是从近制文件读取数 据,则默认为64k
external_table: not_used:不使用外部表,通过常规路径或直接路径加载数据
                 generate_only:sqlldr并不执行加载,而是生成创建外部表的sql和处理数据的sql,并保存在log文件中,用户可
                  以修改后拿到sqlplus中执行
                 execute:执行外部表并加载数据
columnarrayrows: 指定直接路径加载时流缓冲区的行数 
                -- Number of rows for direct path column array(默认5000)
streamsize :    -- Size of direct path stream buffer in bytes(默认256000)
                指定直接路径加载时流缓冲区的大小
multithreading 是否启用多线程,多cpu为true,单cpu false,直接路径加载时有效
           --   use multithreading in direct path
resumable --   会话等待空闲空间分配,在执行sqlldr时,如果余下空间不足,false参数则直接报错退出,如果设置为true,
                               则等待,让dba手动处理,达到resumable_timeout参数中指定的超时时间,再退出
                enable or disable resumable for current session(默认FALSE)
resumable_name 会话标示名,通过查询user_resumable或dba_resumable二个字典来获取信息,
               -- text string to help identify resumable statement
resumable_timeout: 会话超时,在多少时间未能执行sqlldr则退出,设置true有效
           -- wait time (in seconds) for RESUMABLE(默认7200)
date_cache --   日期转换用缓存在,用于提高转换效率.仅在直接路径加载时有用
             size (in entries) of date conversion cache(默认1000)

你可能感兴趣的:(参数,使用,sqlldr.exe)