sqlldr杂记
控制文件如下所示:
OPTIONS(SKIP=3) --此行可有可无,skip=3表示忽略数据文件中前三行记录
LOAD DATA
INFILE 'D:\Project\sqlldrtest\demo10.dat'
badfile '10bad.txt'
truncate
INTO TABLE emp
when empno<>'7781'
(empno POSITION(01 : 04) INTEGER EXTERNAL,
ename POSITION(06 : 15) "'刘'||upper(:ename)", --可以如此进行处理。
job POSITION(17 : 25) "case when length(:job)<=5 then :job else substr(:job,1,5)||'.'||substr(:job,6) end",--可以使用此进行复杂处理
mgr POSITION(27 : 30) INTEGER EXTERNAL,
sal POSITION(32 : 39) DECIMAL EXTERNAL,
comm POSITION(41 : 48) DECIMAL EXTERNAL,
deptno POSITION(50 : 51) INTEGER EXTERNAL,
loadseq "s_s_seq.nextval")---其中s_s_seq为预先定义的一个sequence
也可以自己写函数来由sqlldr来调用
如果需要进行字符串拼接可以使用如下方式
| 本帖最后由 loooc 于 2011-11-1 14:45 编辑 最终解决方案: tname ":tname || to_char('AAA')" 或 tname "concat (:tname,'AAA') |

浙公网安备 33010602011771号