oracle 抽数据到 hana,技术文 | Oracle同步数据到HANA产生乱码的问题分析
原标题:技术文 | Oracle同步数据到HANA产生乱码的问题分析
与大家分享一个在项目中ETL数据同步的过程中遇到的乱码问题。
四月的某天,项目同事说用DS抽取了一张表到HANA中,但是数据是乱码,问我有没有遇到过这种情况,我说没有,于是有了以下的分析:
从Oracle同步到HANA后的乱码
源数据库中数据
如上图所示,很明显产生乱码的都是中文字符的部分。根据经验,这种不同数据库之间中文字符乱码的问题,极有可能是不同数据库试用的编码规则不一致导致的。雷同于用本地txt活csv文件导入数据时,HANA默认要用UTF-8编码格式,如果默认用ANSI编码,导入后中文就会是乱码。
根据这个思路,查询了Orale的编码:
在Orale中执行语句:
执行的结果显示Oracle中的编码规则是:
AMERICAN_AMERICA.ZHS16GBK
Oracle中执行结果
然后登录DS服务器,查询DS服务器中的编码类别:
在DS服务器中执行:echo$NLS_LANG
执行结果显示DS服务器中的编码规则是:
CHINESE_CHINA.WE8ISO8859P1
DS中执行结果
查完编码结果之后,证实了之前的设想是正确的。找到问题的原因后开始寻找解决方法。思路是要让这两种编码规则一致。有两个办法:修改Oracle的编码规则或者修改DS的编码规则。
Oracle是业务系统,肯定不能修改,所以只能修改DS的编码规则:
登录DS服务器,找到.profile文件,执行如下语句:
erxportNLS_LANG=AMERICAN_AMERICA.ZHS16GBK
然后执行:echo$NLS_LANG查看执行结果是否修改成功。
然后在修改DS中的DSConfig.txt文件,修改成如下结果:
[Locales]
AL_Engine = _.gb18030
InstalledProductLocales = en
ProductLocale = en
保存文件,然后重启DS服务。
最后一步在DS前台设计器登录后,设置如下:
然后重新执行DS JOB后,HANA中的乱码问题解决。
备注:各系统版本情况
数据源系统:Oracle 11g;
目标系统: HANA 2.0;
ETL工具:Data Services version 4.2 on linux suse 12;
作者:杨鑫
校对&编辑:elaine
责任编辑:
文章来自于网络,如果侵犯了您的权益,请联系站长删除!