【问题标题】:Load a structured text data file using only one control file仅使用一个控制文件加载结构化文本数据文件
【发布时间】:2010-10-07 09:32:31
【问题描述】:

我有一个需要加载的文本文件,其结构如下(糟糕的是,我没有更改许可):

MM/DD/YYYY 24HH:MI:SS 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

合二为一:

EMP(ISHEADER, HEAD_DATA_TIME, NO_OF_REC, EMP_ID,EMPNAME,SALARY)

列数据类型可以灵活。

预期加载结果:

  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. 第二个加载其余数据(使用 OPTION SKIP 和 APPEND 模式)。

有没有只使用一个控制文件的解决方法?

谢谢。

【问题讨论】:

    标签: oracle10g sql-loader


    【解决方案1】:

    我的 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 条件下使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多