本文介绍SQL*Loader在实际使用过程中经常用到的典型例子。
a1,a2,a3,a4 b1,b2,b3,b4 c1,c2,c3,c4 d1,d2,d3,d4总共4列,先要求只要第2、3列数据,怎么办呢?这时候,FILLER(注意:不是FILTER)参数派上用场了,控制文件如下所示:
load data infile 'data.csv' "str '\r\n'" into table test.test append fields terminated by ',' ( col1 filler, column01_name, column02_name )从上面的控制文件我们注意到在第一列col1后面有filler标识,表示将不读取第1列的数据;细心的读者可能发现了我们并没有给第4列加上filler标识,这是因为sqlldr默认跳过剩下的数据,当然如果你写上col4 filler也是可以的。
SYS@TEST16> select LAST_NUMBER from dba_sequences where sequence_name='SEQ_ORDER'; LAST_NUMBER ----------- 54104052)在sqlldr的控制文件里,以上一步获得的值为sequence的开始值,如下所示:
load data infile '663.csv' "str '\r\n'" into table p95169.zxj_663 truncate fields terminated by ',' trailing nullcols ( hospdeptuuid, departmentname, sortcode01 )
options(skip=1) load data infile '684.csv' "str '\r\n'" into table p95169.zxj_684 truncate fields terminated by ',' trailing nullcols ( expertuuid "trim(:expertuuid)", diseaseuuid "trim(:diseaseuuid)" )
introduction char(100000),这是因为PL/SQL 字符变量可以很长,但数据库中char 类型的长度只有2000字节。所以我们不能将大于2000字节的字符插入到数据库的字符列中。但我们可以将任意的char(N) 的值插入到long 或是clob 中。