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做的