源库A: Oralce 字符编码为US7ASCII
目标库:Oracle 字符编码为ZHS16GBK
问题:从源库上直接抽取数据到目标库,发现中文字段全为乱码
由于目标库的数据来源有多个,其他的源库字符集均与目标库一致,所以目标库的的字符集不能更改。想看看有没有在Datastage中进行字符集转换的方式

解决方案 »

  1.   

    参考:http://www.eygle.com/archives/2004/09/nls_character_set_06.html
      

  2.   

    一.字符集的修改只能由子集向超集改,如:   
        1.US7ASCII   ->WE8ISO8859P1   
        2.US7ASCII   ->ZHS16GBK     二.楼主可以做个实验(不要轻易修改字符集):先安装好一台机子,Oracle环境与源库A完全相同(Oralce 字符编码为US7ASCII)
      
    三.在实验机中修改字符集,具体步骤为:   
      SQL>   STARTUP   MOUNT;   
      SQL>   ALTER   SYSTEM   ENABLE   RESTRICTED   SESSION;   
      SQL>   ALTER   SYSTEM   SET   JOB_QUEUE_PROCESSES=0;   
      SQL>   ALTER   DATABASE   OPEN;   
      SQL>   update   sys.props$   set   value$='AMERICAN_AMERICA.ZHS16GBK';   
      SQL>   SHUTDOWN   IMMEDIATE;  
      SQL>   STARTUP;  四.在目标库中再抽取一下实验机中的数据,如可以的话,恭喜了;如不行,则另想办法。 
      

  3.   

    props$也可以改?楼主要是生产数据库的话可要慎重。
    http://topic.csdn.net/t/20050411/16/3927004.html
      

  4.   

    哈哈不过好像现在资料都不建议直接改props$了楼主这个问题,无需改库的字符集吧,直接exp, imp估计就可以了