SQL*Loader控制文件

本文针对SQL*Loader控制文件进行说明。
一:SQL*Loader控制文件的内容
SQL*Loader控制文件使用DDL命令来控制SQL*Loader会话的以下项目:
●使用SQL*Loader导入数据的位置
●数据格式设定方法
●导入数据时SQL*Loader的设定。(内存管理、被拒绝记录、导入处理的中断等)
●导入时数据的处理方法
控制文件例:emp.ctl
OPTIONS(LOAD=100,SKIP=1,ERRORS=-1,ROWS=10)
LOAD DATA
INFILE 'data/emp.csv'
BADFILE 'emp.bad'
APPEND
INTO TABLE EMP
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
  EMPNO,
  ENAME,
  JOB,
  MGR,
  HIREDATE,
  SAL,
  COMM,
  DEPTNO
)

内容说明:
书写命令的顺序基本是固定的,命令说明见下图
KeyWord        说明                                        备考
-------        ---------------------------------------     ---------------------------------
OPTION         传递给SQL*Loader的参数可在控制文件中指定
               LOAD:导入的记录条数                         -1时,全部
               SKIP:跳过的记录条数                         -1时,4294967295(0xffffffff)
               ERRORS:允许错误条数                         -1时,全部
               ROWS:每几条记录进行一次COMMIT               -1时,4294967295(0xffffffff)
-------        ---------------------------------------     ---------------------------------
LOAD DATA      约定记号(导入数据)
-------        ---------------------------------------     ---------------------------------
CHARACTERSET   指定文字码
--------------------------------------------------------------------------------------------
INFILE         指定数据文件。如含有导入数据的CSV文件。     执行sql*loader时的在路径的相对路径
               多个文件指定可能。                          或绝对路径
-------        ---------------------------------------     ---------------------------------
BADFILE        无法导入的错误数据写到此文件
-------        ---------------------------------------     ---------------------------------
DISCARDFILE    使用WHEN指定的导入对象外数据写到此文件
--------------------------------------------------------------------------------------------
(导入模式)            
INSERT         INSERT:向空表中插入新数据                   必须使用空表。表中有数据则出错
APPEND         APPEND:向表中追加数据                       表中已有数据时,不插入重复数据
REPLACE        REPLACE: 删除表中数据后导入新数据           删除操作:delete
TRUNCATE       TRUNCATE:删除表中数据后导入新数据           删除操作:truncate
-------------------------------------------------------------------------------------------
INTO TABLE     指定要插入数据的表                          可指定复数个           
-------        ---------------------------------------     ---------------------------------
WHEN           指定输入数据的条件                          1.类似WHERE语句。但只能使用=,<>(!=),and
                                                           2.不合条件的数据(废弃)写到指定废弃文件
                                                           3.例:[WHEN 列名=值]
                                                                [WHEN (列名!=值) AND (列名<>值)]
                                                                [WHEN (位数)=值] 
                                                             如[WHEN (1)='ABC']
                                                                →行的第一位开始为"ABC"的数据
-------        ---------------------------------------     ---------------------------------
FIELDS         可变长时,指定项目的区别方法: 
               TERMINATED BY:指定数据项的间隔符            逗号间隔→ [TERMINATED BY ","]
                                                           TAB符间隔→[TERMINATED BY X'09'] 
               OPTIONALLY ENCLOSED BY:         
               指定用来封闭数据项的字符                    如指定数据项用双引号引起来
                                                           →「OPTIONALLY ENCLOSED BY '"'」
-------        ---------------------------------------     ---------------------------------
TRAILING                                                  
NULLCOLS       对应数据项没有值时插入NULL                   
-------        ---------------------------------------     ---------------------------------
(项目)         导入数据的表的名项目名
-------        ---------------------------------------     ---------------------------------

控制文件中的--开始的行是注释。

二:数据文件 (要导入的数据)
数据文件可使用固定长度文件,但CSV形式的文件比较常用。
数据文件名在控件文件中(INFILE)记述。
CSV文件中记录的项目比控制文件中指定的项目多时,多余的将被忽略。
使用windows的text文件时,有时文件最后有EOF字符,
这也会被当成一条记录,会导致出错。

INFILE,BADFILE,DISCARDFILE可指定为复数个文件。
例:
~LOAD DATA
INFILE '文件1' BADFILE '不良文件1.bad' DISCARDFILE '废弃ファイル1.dis'
INFILE '文件2' BADFILE '不良文件2.bad' DISCARDFILE '废弃ファイル2.dis'
INFILE '文件3' BADFILE '不良文件3.bad' DISCARDFILE '废弃ファイル3.dis'

APPEND~

上例中,文件1中的错误数据被写到不良文件1.bad,
文件2中的错误数据被写到不良文件2.bad,...
DADFILE不指定时,INFILE名的后缀改为bad作为BADFILE文件名使用。
DISCARDFILE不指定时,不符合WHEN条件的废弃数据不做输出。指定文件没写后缀名时默认使用dsc。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值