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') 

 

 

posted @ 2012-10-09 12:50  smart-liu  阅读(310)  评论(1)    收藏  举报