oracle11查询数据乱码,【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')

查询结果如下图:

ef12042f0ef80261ecdb1291a9c45119.png

我们可以看到数据库编码是GBK

(2)在DS Administrator,依次打开Project-->> 选择工程 -->> Propertites -->> Environment -->> User Defined, 然后添加NLS_LANG变量,如下图:

特别说明:参数值是由上述查询结果拼接起来的,此处的值是AMERICAN_AMERICA.ZHS16GBK

dece4148fe205d46b627e440a15427ed.png

(3)将该参数导入到你的作业, 运行你的作业,让他跑起来,如果作业加载成功并且中文也不乱码,那么说明是由于该环境变量造成的影响,你就需要进行第4步操作;

1232c7edf213e07f02c2721780adcc32.png

(4)找到dsenv文件,添加或者修改为以下内容:

NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;ecport NLS_LANG

设置完成后,重启DS服务器即可。还得注意:dsenv一般位于$DSHOME下

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值