【DataStage】11.5版本加载Oracle数据乱码问题
1.问题描述
在使用DataStage 11.5版本连接Oracle数据库做ETL工作的时候,发现一个问题,每次加载中文数据就乱码,很头疼,此处我的数据库编码格式是GBK,我进入DS的Adminstrator中将编码格式全部调整成了GB1231,屡试不爽啊!最终还是乱码,搞到崩溃,索性将DS中导入的字段全部添加Unicode属性,这样自己觉得还靠谱点,但是,问题来了,Unicode本身是做编码转化的,此处基于同一个编码的Oracle数据库来操作,何来编码转换之说呢?于是继续查找解决问题的办法。最终找了到一个合适的办法。在下文一一道来。
2.问题解决
(1) 首先查询出Oracle数据库的编码
SELECT * FROM V$nls_Parameters
WHERE parameter in ('NLS_LANGUAGE', 'NLS_TERRITORY', 'NLS_CHARACTERSET')
查询结果如下图:
我们可以看到数据库编码是GBK
(2)在DS Administrator,依次打开Project-->> 选择工程 -->> Propertites -->> Environment -->> User Defined, 然后添加NLS_LANG变量,如下图:
特别说明:参数值是由上述查询结果拼接起来的,此处的值是AMERICAN_AMERICA.ZHS16GBK
(3)将该参数导入到你的作业, 运行你的作业,让他跑起来,如果作业加载成功并且中文也不乱码,那么说明是由于该环境变量造成的影响,你就需要进行第4步操作;
(4)找到dsenv文件,添加或者修改为以下内容:
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;ecport NLS_LANG
设置完成后,重启DS服务器即可。还得注意:dsenv一般位于$DSHOME下
作者:奔跑的金鱼
声明:书写博客不易,转载请注明出处,请支持原创,侵权将追究法律责任
个性签名:人的一切的痛苦,本质上都是对自己无能的愤怒
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!