oracle sqlloader使用笔记
oracle 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后的数值前面不能有空格