天天看点

基础知识整理

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)