sqlloader 使用笔记
命令: sqlldr userid=username/pwd control=file log=logfile
load data --语法关键字
infile 'filename' -- 要导入数据的数据文件,默认格式为.dat,如果要从多个文件导入,则在依次增加infile就可以了
infile 'filename' -- 以此类推
inifile * -- 要导入的数据就在control控制文件里 由begindata进行引导数据起始点
concatenate 数字 -- 把几行记录当成一行数据处理, 只能在使用begindata时使用
continueif this(1:1) = '- ' // 找每行的开始是否有连接字符 - 有就把下一行连接为一行
badfile 'badfilename' --坏文件地址
discardfile 'discardfilename' --描述文件地址
into table 表名 --要将数据导入那个表
-- 装载表数据的方式
append --在原有数据基础上添加
replace -- 删除原有表的数据,添加新的数据
insert --默认值,在装载空表时使用,如果表中有数据,sqlloader会停止报错,提示表必须为空
truncate -- 会用truncate先删除数据,然后在装载新数据
fields terminated by '数据分隔符' optionally encolsed by '每个数据是以什么分隔符界定的'
-- "dfdf","dfdfdf" terminated by ',' optionally encolsed by '"' 表列对应的数据是以逗号“,”分隔的,每个值是用双引号界定的,双引号内如果有逗会做为值插入到表中
terminated by X'09' -- 以制表符分隔,即TAB键
terminated by writespace -- 以空白字符为分隔符
trailing nullcols -- 如果装载的数据为空,则以NULL插入表
(列1 [position(1:2)] [filter] [函数,字段做为函数入参格式:"函数名(:列名)"->name "upper(:name)"] [数据类型] [数据格式,比如日期'yyyy-mm-dd'],列2 .., ...) --如果加filter关键字,则该列数据被忽略
// 当没声明FIELDS TERMINATED BY ', '用位置告诉字段装载数据
// (
// col_1 position(1:2),
// col_2 position(3:10),
// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置
// col_4 position(1:16),
// col_5 position(3:10) char(8) // 指定字段的类型
// )
begindata
数据
//注意begindata后的数值前面不能有空格