zoukankan      html  css  js  c++  java
  • 【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下

  • 相关阅读:
    中文转码问题总结
    Linux命令总结
    Maven实战系列文章目录
    JXL API总结
    docker 中安装mysql8之后无法远程连接的问题caching-sha2-password
    springboot查数据并以csv格式现在到本地
    aop
    java.lang.ClassNotFoundException: org.aspectj.lang.JoinPoint
    shiro框架中获取username、ip等信息
    cron
  • 原文地址:https://www.cnblogs.com/OliverQin/p/13050466.html
Copyright © 2011-2022 走看看