1、命令行下使用的一种格式:
sqlldr dbuser/dbpasswd@host:port/dbname direct=true control=/test/app/test.ctl data=/test/app/test.txt log=test.log bad=test.bad //若向本地数据库导入数据的话,可在oracle用户环境下,只用dbuser/dbpasswd连接。
在非oracle用户环境下,使用sqlldr命令时,需先配置好oracle工具的环境变量。
用data参数指定数据文件时,相应的ctl文件中,指定 INFILE ''
2、控制文件说明:
文件后缀通常以ctl结尾。
内容格式如下:
UNRECOVERABLE ##加载数据不可恢复,RECOVERABLE:加载数据可恢复,CONTINUE_LOAD:表示继续加载
LOAD DATA ##加载数据
INFILE 'test.txt' ##数据文件位置,为*代表数据就在控制文件中,为''空时,表示文件位置参数由命令行参数data指定。
REPLACE ##完全替换表中数据(先DELETE表再INSERT,),INSERT:向空表中插入数据,APPEND:向表中追加数据,TRUNCATE:先TRUNCATE清除表,再INSERT.
INTO TABLE tablename ##数据要加载的目标表,应提前建好
FIELDS TERMINATED BY "," TRAILING NULLCOLS ##设置数据部分字串的分隔符号,此处设为','; TRAILING NULLCOLS:指表中的字段在文件中没有对应值时,允许为空
( ID "trim(:ID)", ##此部分开始为表字段,可在字段名后,使用函数对值进行处理,示例"trim(:ID)"去除列前后空白
number,
createtime date 'yyyy-mm-dd hh24:mi:ss' nullif createtime=blanks, ##加载日期数据,指定日期格式,为空白时,加载为空
testid filler, ##关键字 filler,表示此列对应的值不会加载
value
)