SQLLDR的使用,有两种方法:
1、使用一个控制文件,在控制文件中加入数据;
2、使用一个控制文件,加上一个或多个数据文件。
为了使控制和数据的分离,主要用的是第二种方式
控制文件的格式(Test.CTL):
UNRECOVERABLE -- 关闭数据库日志
INFILE 'd:/ctltest/data1.txt' -- 指定外部数据文件
INFILE 'd:/ctltest/data_new.txt' --可以指定多个外部数据文件
-- 这里还可以使用 BADFILE、DISCARDFILE 来指定坏数据和丢弃数据的文件
Append -- 操作类型,这里还可以用INSERT、TRUNCATE、REPLACE
INTO TABLE basechannelvisittab -- 要插入记录的表
Fields terminated by "," -- 数据中每行记录用 "," 分隔
trailing nullcols
(
USER_ ,
IP ,
TIME_ Date 'yyyy-mm-dd hh24:mi:ss',
CHANNEL ,
COUNT_ ,
VERS ,
PART_VAL
)
操作类型的区别如下:
1) insert --为缺省方式,在数据装载开始时要求表为空
2) append --在表中追加新记录
3) replace --删除旧记录(用 delete from table 语句),替换成新装载的记录
4) truncate --删除旧记录(用 truncate table 语句),替换成新装载的记录
执行命令如下:
sqlldr userid=ganwu/ganwu@ora_98 control=test.ctl log=test.out direct=true
UNRECOVERABLE keyword may be used only in direct path
UNRECOVERABLE(关闭数据库日志)只能在direct方式下使用