从mysql中导出一张表为文本文件,用tab做分隔符,想导入oracle10g中,使用sqlldr的时候发现mysql导出的数据中某个数值类型的字段上有NULL的字符,再导入oracle的中表数值字段时发生错误,请问应该怎样处理.

解决方案 »

  1.   

    用decode函数转换。如
    create table ls (
       f1 varchar2(10) not null,
       f2 number(12,2) not null,
       f3 number(12,2) not null,
       f4 number(12,2) null,
       f5 char(2) default '0' null,
       f6 date null) ;数据文件内容是
    1ab cdef 40 3140 71.4 2001-11-12 10:58:39
    10101 30 0 nuLL 2001-1-9 10:20:39
    10102 30 2010 50.10 2001-12-3 20:20:9
    10103 20 30030 320.30 2001-3-4 3: 2: 3控制文件是
    LOAD DATA
    INFILE  "demo.dat" 
    INTO TABLE  ls truncate
    FIELDS  TERMINATED  BY X'09'  
    (f1,f2,f3 ":f3/100",f4 "decode(upper(:f4),'NULL',null,:f4)",f6 date(19) 'YYYY.MM.DD HH24:MI:SS')
      

  2.   

    (f1,f2,f3 ":f3/100",f4 "decode(upper(:f4),'NULL',0,:f4)",f6 date(19) 'YYYY.MM.DD HH24:MI:SS')