Sqlloader的步骤
1) Oracle 数据库端必须已经建好了需要导入的数据表的结构
2) 存在数据源文件
3) 手工编辑一个XXX.CTL 的控制文件
4) 命令行加载数据
Sqlldr命令具体信息如下图
Sqlldr运行的一个具体例子
sqlldr userid=user1/123456
control=bcp1.ctl log=log/bcp1.log bad=bad/bcp1.bad discard=discard/bcp1.discard
errors=100 parallel=true
解释:
Userid:表示使用哪个用户进行导入,一般使用system,然后控制文件中写明导入哪个schema下,如果使用本用户导入,这控制文件不需要指定schema,直接指定table_name就可以了
Control:表示使用本目录下的bcp1.ctl控制文件
Log:表示日志写入本目录的log目录下的bcp1.log文件
Bad:表示错误数据写入本目录的bad目录下的bcp1.bad文件
Discard:表示丢弃的数据写入本目录的discard目录下的bcp1.discard文件
Errors:表示最大容忍的错误行数,errors=all会报错,只能是数字,默认50,当错误数据行数达到这个数字时,sqlldr会终止,终止之前导入的数据会存在oracle中,不会丢失。
Parallel:表示开启并行,parallel=20会报错,只能是true或false
控制文件格式如下:
load data
CHARACTERSET AL32UTF8
infile 'tb_Factory.TXT'
into table TB_FACTORY
fields terminated by whitespace
TRAILING NULLCOLS
(column_name1,
column_name2,
column_name3,
column_name4)
或如下,不是统一的分隔字段,每个字段用不同的分隔符
load data
CHARACTERSET AL32UTF8
infile 'tb_Factory.TXT'
into table TB_FACTORY
TRAILING NULLCOLS
(column_name1 terminated by ',',
column_name2 terminated by ';',
column_name3 terminated by '|',
column_name4 terminated by x'09')
CHARACTERSET ZHS16GBK --转换为简体中文
append into table TB_FACTORY --追加到表中
replace into table TB_FACTORY --清空原表后再写入
fields terminated by '|' --竖线
fields terminated by '