代码之家  ›  专栏  ›  技术社区  ›  Marc

Oracle Sql加载程序控制文件存在问题

  •  0
  • Marc  · 技术社区  · 17 年前

    LOAD DATA
    INFILE *
    APPEND INTO TABLE economic_indicators
    FIELDS TERMINATED BY ','
    (ASOF_DATE DATE 'DD-MON-YY',
    VALUE FLOAT EXTERNAL,
    STATE,
    SERIES_ID INTEGER EXTERNAL,
    CREATE_DATE DATE 'DD-MON-YYYY')
    BEGINDATA
    01-Jan-79,AL,67.39940538,1,23-Jun-2009
    

    ... 很多其他的数据线。

    问题是sql loader无法识别我指定的数据类型。这是日志文件:

    Table ECONOMIC_INDICATORS, loaded from every logical record.
    Insert option in effect for this table: APPEND
    
    Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    ASOF_DATE                           FIRST     *   ,       DATE DD-MON-YY       
    VALUE                                NEXT     *   ,       CHARACTER            
    STATE                                NEXT     *   ,       CHARACTER            
    SERIES_ID                            NEXT     *   ,       CHARACTER            
    CREATE_DATE                          NEXT     *   ,       DATE DD-MON-YYYY     
    
    value used for ROWS parameter changed from 10000 to 198
    Record 1: Rejected - Error on table ECONOMIC_INDICATORS, column VALUE.
    ORA-01722: invalid number
    

    ... 如果尝试将字符数据插入数字列,则会出现许多类似错误。

    我没有尝试过数据类型规范,所有其他数字规范,而且总是相同的问题。有什么想法吗?

    还有,你知道为什么要修改Rows参数吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Juergen Hartelt    17 年前

    在您的示例中,SQL*Loader将尝试将字符串“AL”计算为数字值,这将导致您给出的错误消息。示例数据看起来可能是第三位的十进制数,而不是列列表中指定的第二位。