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条件下使用。