最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

Oracle同步数据到HANA产生乱码的问题分析

[复制链接]
跳转到指定楼层
楼主
发表于 2019-11-1 16:49:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
与大家分享一个在项目中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文件,执行如下语句:
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;
作者:杨鑫
来源:英诺森

楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-4-26 11:48

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表