日期:2014-05-17  浏览次数:20757 次

sql loader的问题
有TXT文件:
CWEB|00|200707140915
CWEB|01|1651620|XXXXXX|MTC_CHS|123456|123456|123456|123456|TJN987-01-01|Y|09072007|BAX   Global   Pte   Ltd-Air-2nd   Day   Air|N|30072007|120   NET||EX   WORKS   (...named   place)|987654321||
CWEB|02|4887809C01|2450|1.1|1.82000|13-JUL-2007|||987654321
CWEB|02|SNN5705B|450|2.1|3.39000|13-JUL-2007|||987654321
CWEB|02|4871302T01|21000|3.1|0|13-JUL-2007|||987654321
CWEB|99|4|200707140915|3

如果以CWEB|00|开头导入到   File   Head表
如果以CWEB|01|开头导入到   Head表
如果以CWEB|02|开头导入到   Line表
如果以CWEB|99|开头导入到   File   tailer表
sql*loader的ctrl文件怎么写?


------解决方案--------------------
给个例子
INTO TABLE dept
WHEN recid = 1
(recid FILLER POSITION(1:1) INTEGER EXTERNAL,
deptno POSITION(3:4) INTEGER EXTERNAL,
dname POSITION(8:21) CHAR)
INTO TABLE emp
WHEN recid <> 1
(recid FILLER POSITION(1:1) INTEGER EXTERNAL,
empno POSITION(3:6) INTEGER EXTERNAL,
ename POSITION(8:17) CHAR,
deptno POSITION(19:20) INTEGER EXTERNAL)

数据是
1 50 Manufacturing -- DEPT record
2 1119 Smith 50 -- EMP record
2 1120 Snyder 50
1 60 Shipping
2 1121 Stevens 60

------解决方案--------------------
插入到多表,只能以position的方式,可是你的字段宽度是不等的,是有分隔符的
因此不能插入到多表
不过办法还是有的
可以自己先写一个小程序,打印不同的数据到不同的文件,然后分别导入

SQLLDR不是万能的,很多事都不适合sqlldr做的