SQL*LOADER
SQL*LOADER是 ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中。
SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。
执行 sqlldr命令可以看到相关帮助信息。
使用说明:
sqlldr userid=scott/scott@oradb control='D:/input.ctl' log='D:/input.log'
input.ctl内容:
load data --控制文件标识。
infile * --当为*时��入的数据在控制文件中,BEGINDATA后面为导入的数据。
infile 'D:/data.csv' --要输入的数据文件名称(CSV格式数据)
badfile 'D:/data.bad' --BAD文件路径
append|insert|replace|truncate --append在表后追加,insert插入空表,replace替代原有内容。
into table tableName --要导入的
数据库表名称
fields terminated by "," --指定字段分隔符为,,csv文件用。
fields terminated by whitespace --指定字段分隔符为tab,txt文件用。
fields terminated by X'09' --以十六进制格式 '09' 表示的。
optionally enclosed by "" --段选择性地封闭导入为选择的后面为空。
trailing nullcols --表的字段没有对应的值时允许为空。
(col1 terminated by ",") --无声明fields terminated by时,列可单独定义。
(col1,col2,col3 FILLER) --定义列,FILLER标识这列不会装载。
(col_1 [interger external]) --定义列整数型
(col_1 [date "dd-mon-yy"]) --定义列日期型
(col_1 [char]) --第一列字符型
(col_1 position(1:2)) --指定位置。
(col_1 position(*:2)) --字段的开始位置在前一字段的结束位置。
(col_1 position(*:2) char(8)) --指定位置以及字段的类型。
(col_1 "upper(:col_1)") --字段使用函数。
begindata --对应开始的INFILE * 要导入的内容就在control文件里。
10,sql,what --begindata后的数值的前面不能有空格
20,lg,show
......
注释:
APPEND 原先的表有数据,加在后面。
INSERT 装载空表,如果原先的表有数据, sqlloader会停止(默认值)。
REPLACE 原先的表有数据,原先的数据会全部删除。
TRUNCATE 指定的内容和replace的相同,会用truncate语句删除现存数据
Sqlldr的函数关键字说明:
Userid --oracle用户名 userid = username/password@serviceName
Control --控制文件名称 control = 'c:/sqlload.sld'
Log --日志文件名称 log = 'c:/sqlload.log'
Bad --损坏文件名称 bad = 'c:/sqlload.bad'
Data --数据文件名
data = 'd:/data.csv'
Discard --discard file name
Discardmax --number of discards to allow(默认全部)
Skip --导入时跳过的记录行数(默认0)
Load --导入时导入的记录行数(默认全部)
Errors --允许错误的记录行数(默认50)