SQL*Loader控制文件

发布时间:2024-12-08 17:15

使用文件版本控制工具如Git #生活技巧# #组织技巧# #文件管理系统#

最新推荐文章于 2021-07-22 10:06:02 发布

Hunterdiary 于 2010-05-20 20:20:00 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文针对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。

网址:SQL*Loader控制文件 https://www.yuejiaxmz.com/news/view/415903

相关内容

[IOController] > Loader error, code =
sql语句where条件是变量
windows cmd 执行sql文件ERROR 1064 (42000):You have an error in your SQL syn报语法错误解决办法
PowerBuilder连接SQLServer失败 SQL State:‘28000’
mybatis+log4j+slf4j打印日志到控制台和日志文件
Python实现数据转移:SQL server ==> SQL server
SQL Server数据库性能优化(一)之 优化SQL 语句
webpack自动化构建工具详细笔记,入门到实战,解决 webpack : 无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称,和webpack : 无法加载文件等等
oracle sql里 => :符号的意思
Oracle数据库日常管理与维护技巧:提升SQL性能与数据安全

随便看看