现在有这样一个从TXT导入到ORACLE的CTL文件,   
在读取资料时出现SQL*Loader-350 语法错误于第6行.
预期值是 有效的列说明,","或")",而实际值是"VARCHAR2".
         EMP_NO     POSTION(1-8)  VARCHAR2(8)
代码如下:  
 LOAD  DATA     
          INFILE     'c:/20090302.txt'     
          TRUNCATE   
          INTO   TABLE HRA_READ_CARD_DAY   
     (                       
          EMP_NO        POSITION(1-8)   VARCHAR2(8),
          MAC_NO        POSITION(10-11) VARCHAR2(10),
          WORK_DATE     POSITION(13-22) VARCHAR2(16),  
          RC_DATE       POSITION(24-28) VARCHAR2(16)
                                        
     )
数据资料如下:
00049353 03 2009/02/28 12:04
00020434 03 2009/02/28 12:04
00026388 03 2009/02/28 12:05
00048085 03 2009/02/28 12:05
                                ^
请各位帮忙查看原因,在检查时取值的范围没错,希望给予指点,谢谢! 

解决方案 »

  1.   

    LOAD  DATA   
              INFILE    'c:/20090302.txt'   
              TRUNCATE 
              INTO  TABLE HRA_READ_CARD_DAY 
        (                     
              EMP_NO        POSITION(1:8)  VARCHAR2(8),
              MAC_NO        POSITION(10:11) VARCHAR2(10),
              WORK_DATE    POSITION(13:22) VARCHAR2(16), 
              RC_DATE      POSITION(24:28) VARCHAR2(16)
                                           
        ) 
      

  2.   

    ctl文件格式有问题,先把POSITION()里的 -换成:试试
      

  3.   

    能帮忙测试下吗?TXT的数据就是下面的这种格式!
    00049353 03 2009/02/28 12:04 
    00020434 03 2009/02/28 12:04 
    00026388 03 2009/02/28 12:05 
    00048085 03 2009/02/28 12:05 
    而且上面的数据格式都是一样的,没有什么区别,如果要报错,就是取值有问题,
               EMP_NO        POSITION(1:8)  VARCHAR2(8), 
              MAC_NO        POSITION(10:11) VARCHAR2(10), 
              WORK_DATE     POSITION(13:22) VARCHAR2(16), 
              RC_DATE       POSITION(24:28) VARCHAR2(16)
    中间用:与-是同样的道理,郁闷中,请各位帮忙测试下!
      

  4.   


    d:\>sqlplus /nologSQL*Plus: Release 10.2.0.4.0 - Production on 星期四 4月 2 09:35:48 2009Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.idle> conn  scott/tiger
    已连接。
    scott@TEST> CREATE TABLE HRA_READ_CARD_DAY
      2      (
      3            EMP_NO   VARCHAR2(8),
      4            MAC_NO     VARCHAR2(10),
      5            WORK_DATE     VARCHAR2(16),
      6            RC_DATE    VARCHAR2(16) );表已创建。scott@TEST> select * from hra_read_card_day;未选定行scott@TEST> host
    Microsoft Windows XP [版本 5.1.2600]
    (C) 版权所有 1985-2001 Microsoft Corp.d:\>sqlldr scott/tiger control=test.ctlSQL*Loader: Release 10.2.0.4.0 - Production on 星期四 4月 2 09:36:39 2009Copyright (c) 1982, 2007, Oracle.  All rights reserved.达到提交点 - 逻辑记录计数 4d:\>exitscott@TEST> select * from hra_read_card_day;EMP_NO   MAC_NO     WORK_DATE        RC_DATE
    -------- ---------- ---------------- ----------------
    00049353 03         2009/02/28       12:04
    00020434 03         2009/02/28       12:04
    00026388 03         2009/02/28       12:05
    00048085 03         2009/02/28       12:05scott@TEST>
    --使用了如下的ctl:
    LOAD  DATA    
    INFILE 'd:\20090302.txt'    
    TRUNCATE  
    INTO  TABLE HRA_READ_CARD_DAY  
        (
              EMP_NO        POSITION(1-8), 
              MAC_NO        POSITION(10-11), 
              WORK_DATE    POSITION(13-22),  
              RC_DATE      POSITION(24-28)                           
        )