sql loader
1.如果所给是一个excel,直接另存为csv格式
2.分隔符不是逗号,可以在控制文件中用fields terminated by的值修改
导入文件,需要有控制文件和数据文件
控制文件内容:
load data
infile data.dat
truncate into table t_simtype
fields terminated by "," optionally enclosed by '"'
(ENAME,JOB,SAL)
数据文件存储按照控制文件中的说明格式的数据
运行sqlldr:
sqlldr xxxx/xxxx control=xxxx(控制文件名)
若没有分隔符,可以指定字符串范围
如:
infile xxx.dat
truncate into table xxxx
(
ename position(1:5),
job position(7:15),
sal position(17:20)
)
可以用position(*+2:15) *表示上一个字段的结束位置
3.数据文件中的列比要导入到表中的少
(
sal "0"
comm "substr(:sal,1,1)"
)
4.数据文件中有多余列
(1)定长的
ename position(1:6)
tcol filler position(8:11)
job position(13:21)
(2)非定长
fields terminated by ","
(ename,tcol filler,job,sal)
4.多个数据文件导入同一张表
infile xxx1.dat
infile xxx2.dat
(mgrno,mname,job)
5.同一个数据文件,导入不同的表
infile xx.dat
discardfile xxx.dat
truncate
into table xxxx
when tab='bon'
(tab filler position(1:3),
ename position(5:9),
job position(*+1:18)
)
into table xxxx1
when tab='mgr'
mgrno position(4:5),
mname position(7:13)
6.对导入数据做修改
仅适用于常规导入
load data
infile xx/xx
into table xxxx
rec_no "my_db_sequenct.nextval",
region CONSTANT '31',
time_loaded "to_Char(sysdate,'hh24:MI')",
data1 position(1:5) ":data/100"
data2 position(6:15) "upper(:data2)",
data3 position(16:22) "to_date(:data3,'YYMMDD')"
跳过指定行数
infile xxx/xxx
into table xxx
skip 5(跳过前五行)
data1 position(1:5)
data2 position(6:15)