Linux服务器中调用Oracle卸数工具sqluldr2,数据库编码为GBK,需要卸UTF-8的数据文件出来,如果某个字段为中文,因为GBK为两个字节,UTF-8为三个字节,同样是10个汉字,直接卸UTF-8编码的长度是原来GBK的1.5倍,如果已经超过这个字段的长度,卸数时会直接截取,导致字段后面字符串丢失。遇到这种问题,可以考虑先正常卸GBK的数据文件出来,再用iconv将GBK文件转码成UTF-8。
iconv -c -f GBK -t UTF-8 gbkfilename.txt -o utf8filename.txt
不过在转码的时候也会花费相应的时间,如果文件较大,转码耗时也会很大。