sqlloader的CTL导入数据
最近做项目遇到一个问题,就是ctl导入数据时要某字段读取到的特定的字符串设置为空,比如当filmNum字段读取”n.e.”这种格式的数据时,存到数据库为NULL。filmNum在数据库的类型是INTEGER。
通过查阅,可以用下面的格式:
filmNum CHAR NULLIF(filmNum="n.e.") "TO_NUMBER(TRIM(:filmNum))"
后面根据项目需要,又要filmNum字段读取”n.p.”这种格式的数据时也置空。也就是当filmNum读取到”n.e.”或”n.p.”数据时,保存到数据库为NULL。可以用下面格式:
filmNum CHAR "CASE WHEN :filmNum ='n.e.' THEN NULL WHEN :filmNum ='n.p.' THEN NULL ELSE TO_NUMBER(TRIM(:filmNum)) END"
至此,问题解决。
希望能帮助遇同问题的猿猴们。