【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下

原文地址:https://www.cnblogs.com/OliverQin/p/13050466.html