Oracle10g 仅使用一个控制文件加载结构化文本数据文件
我有一个文本文件需要加载,其结构如下(很糟糕,我没有更改的许可):Oracle10g 仅使用一个控制文件加载结构化文本数据文件,oracle10g,sql-loader,Oracle10g,Sql Loader,我有一个文本文件需要加载,其结构如下(很糟糕,我没有更改的许可): Ex: 12/24/2010 20:30:10 number_of_datarow_below E0001,SMITH,5000 E0002,JOHN,7000 E0003,KEWELL,9000 ISHEADER HEAD_DATA_TIME NO_OF_REC EMP_ID EMPNAME SALARY 1 12/24/2010 20:30:10 3
Ex:
12/24/2010 20:30:10 number_of_datarow_below
E0001,SMITH,5000
E0002,JOHN,7000
E0003,KEWELL,9000
ISHEADER HEAD_DATA_TIME NO_OF_REC EMP_ID EMPNAME SALARY
1 12/24/2010 20:30:10 3
2 E0001 SMITH 5000
2 E0002 JOHN 7000
2 E0003 KEWELL 9000
合并到一个表中:
EMP(ISHEADER, HEAD_DATA_TIME, NO_OF_REC, EMP_ID,EMPNAME,SALARY)
列数据类型可以是灵活的。预期负载结果:
12/24/2010 20:30:10 number_of_datarow_below
E0001,SMITH,5000
E0002,JOHN,7000
E0003,KEWELL,9000
ISHEADER HEAD_DATA_TIME NO_OF_REC EMP_ID EMPNAME SALARY
1 12/24/2010 20:30:10 3
2 E0001 SMITH 5000
2 E0002 JOHN 7000
2 E0003 KEWELL 9000
我的解决方案:
我正在使用两个控制文件:1。第一个加载头(使用选项load=1和TRUNCATE模式)。
2。第二个选项用于加载其余数据(使用选项SKIP and APPEND mode) 是否有只使用一个控制文件的解决方法?
谢谢。我的SQL加载器已经生锈了,但不知何故,您不能使用WHEN子句吗
INTO TABLE emp
WHEN rectype = 'E'
(rectype POSITION(1:1) CHAR,
...)
INTO TABLE emp
WHEN rectype != 'E'
(rectype POSITION(1:1) CHAR,
...)
我正在使用Oracle的SQLLDR。Oracle loader有一些看起来很有前途的东西,比如sequence、max、rownum,但它只在知道要加载到哪个表之后才用来操作数据,它们可以在when条件下使用。