马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
与大家分享一个在项目中ETL数据同步的过程中遇到的乱码问题。 四月的某天,项目同事说用DS抽取了一张表到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文件,执行如下语句: erxport NLS_LANG=AMERICAN_AMERICA.ZHS16GBK 然后执行:echo$NLS_LANG 查看执行结果是否修改成功。 然后在修改DS中的DSConfig.txt文件,修改成如下结果: [Locales] AL_Engine = <default>_<default>.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; 作者:杨鑫 来源:英诺森
|