问题描述:
通过Item Inbound程序上传Item csv文件时,上传失败,提示‘Upload OIF failed’。但同一批数据却可以通过EBS Item Upload功能正常上传
原因调查:
Item Inbound程序处理逻辑如下:
1、用户整理要上传的CSV文件-->字符集为中文
2、通过sqlload ctl文件上传至临时In表-->ctl中规定的字符集为中文,而In表字符集为UTF8
3、对In表数据进行验证,验证通过的数据插入临时Out表-->Out表字符集为UTF8
4、根据Out表的数据生成要插入标准接口表的csv文件-->由于没有指定生成文件的字符集,csv文件字符集取默认值UTF8
5、通过sqlload ctl文件将csv文件插入标准接口表-->ctl中规定字符集为中文,标准接口表字符集为UTF8
这个处理流程中4、5之间的字符集转换逻辑为CSV(UTF8)-->Ctl(中文)-->标准接口(UTF8),这将导致字符代码转换错误,使得插入标准接口的(中文)字符发生乱码甚至超过接口表定义的项目长度而报错。
注:EBS Data Upload Function之所以能正常上传是因为:初始化的时候,Oracle Form标准功能已将上传csv文件的字符集转换成了UTF8。
对应方法:
方法一、修改4、5之间ctl文件中规定的字符集,由中文改成UTF8。
方法二、修改4~5之间的处理流程为:程序将Out表的数据直接插入EBS标准接口表。这样就无需根据Out表数据生成csv文件,也无需通过Ctl文件。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24856894/viewspace-677793/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24856894/viewspace-677793/