CTL导入特定字符串置NULL

来源:互联网 发布:网络刷手平台 编辑:程序博客网 时间:2024/05/17 22:05

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" 

至此,问题解决。
希望能帮助遇同问题的猿猴们。