这个csv比较特殊,有一列是用引号括起来,并且中间有逗号,这样控制文件的分隔符如果用逗号,这一列会报错,因为会把这一列拆分掉,请问各位大拿该如何写?csv数据样式如下:11532682,移动,MSCServer,JIHGS4,272345,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分50秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LIC-V1R6C5-NO LCS-ON1049046.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,11532683,移动,MSCServer,HZGS21,638697,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分51秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LICR6C520100118.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,11532684,移动,MSCServer,HZGS11,1409693,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分52秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LICR6C520100118.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,11532685,移动,MSCServer,JIHGS5,206182,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分54秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LIC-V1R6C5-NO LCS-ON1049046.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,

解决方案 »

  1.   

    最后一列为时间类型,其他都是varchar2
      

  2.   

    掉了一列,最后一列为时间类型,其他都是varchar211532682,移动,MSCServer,JIHGS4,272345,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分50秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LIC-V1R6C5-NO LCS-ON1049046.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,2010-03-1411532683,移动,MSCServer,HZGS21,638697,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分51秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LICR6C520100118.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,2010-03-1411532684,移动,MSCServer,HZGS11,1409693,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分52秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LICR6C520100118.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,2010-03-1411532685,移动,MSCServer,JIHGS5,206182,License文件即将失效,软件系统,重要,已确认未清除 故障,2010年3月13日 01时19分54秒+08:00,2010年3月13日 06时51分55秒+08:00, ,wgjkwgjk,,"文件名=LIC-V1R6C5-NO LCS-ON1049046.dat, 位置=BAM, 剩余天数=37",,,,,2387,,ADAC,,,2010-03-14
      

  3.   

    控制文件样例:load data 
    infile c:\data.csv
    truncate into table tab
    fileds terminated by ',' optionally enclosed by '"'
    trailing nullcols
    (id
    ...
    mydate date 'yyyy-mm-dd')
      

  4.   

    可以在sqlldr 命令后加log=目录 输出日志,可以查询一下,具体的出错位置还有就是你生成的csv数据,你可以将数据放到Excel中,然后在转成csv格式,这样可以避免你上面提到的特殊符号的问题了。
      

  5.   

    这个是比较特殊。  我认为你在做导出文件到CSV的时候,应该预先作处理。 比如引号用其他符号替换,或者加上预处理字符。
    参考一些,不一定适合你需要:
    http://blog.csdn.net/xdy3008/archive/2010/03/05/5349052.aspx
      

  6.   

    tangren 的方法可以解决这个问题了还有个问题,类似 “2010年3月13日 01时19分50秒+08:00” 这样的日期在控制文件中怎样格式化成"yyyy-mm-dd hh24:mi:ss",我用CONFIRM_TIME "to_date(:CONFIRM_TIME,'yyyy-mm-dd hh24:mi:ss')" 这样方式报错
    “记录 2: 被拒绝 - 表 SE_HW_ALARM_CURRENT 的列 CONFIRM_TIME 出现错误。
    ORA-01861: literal does not match format string”这个csv文件是我从服务器上取下来的,不是我生成的,所以我无法控制csv生成的格式。