我用Sqlldr导入数据,有一个字段是时间,Oracle老提示 ORA-01861: 文字与格式字符串不匹配13001411110 121106 SCWEB HSALL CUSTOM 2004-8-31 IVRHBJK请问这个怎么处理?第一个帮我解决问题的,独得100分!Thx

解决方案 »

  1.   

    '2004-8-31 IVRHBJK'后面的是什么,也需要吗?
      

  2.   

    用to_date('2004-8-31',"yyyy-mm-dd")转换成日期型
      

  3.   

    like this:Load data
    Append into table t1
    FIELDS TERMINATED BY "|" 
    (
    a date 'yyyy-mm-dd'
    )
      

  4.   

    sqlldr是从文件中读的,用to_date我试过,不行。13001411110 121106 SCWEB HSALL CUSTOM 2004-8-31  IVRHBJK
    是文件里面的一行
      

  5.   

    找到答案了,可以在ctrl文件里面指定类型回答:
        问题出在控制文件上,有两个问题:
    1.    日期位置不对,应为POSITION(43:51)
    2.    最后两个NUMBER类型指定不对,,因为你的数据是变长的,按你的写法位置包含空格,可以不写类型,由ORACLE自动转换.
    以下有两种控制文件格式可以正确装载数据:一:
    LOAD DATA
       INFILE 'c:\KKK.TXT'
       APPEND
       INTO TABLE sb_zsxx_test
       (ZSXH         POSITION(01:20)   CHAR,--EXTERNAL外部的,
       NSRSBH        POSITION(22:41)   CHAR,
       SSSQ_Q        POSITION(43:51)   DATE,
       KSSL          POSITION(52:62)   ,
       SE            POSITION(63:73)   )二:
    LOAD DATA
       INFILE 'c:\KKK.TXT'
       APPEND
       INTO TABLE sb_zsxx_test
       fields terminated by whitespace
       (ZSXH         CHAR,--EXTERNAL外部的,
       NSRSBH        CHAR,
       SSSQ_Q        DATE,
       KSSL          ,
       SE            )