分享

ORACLE不同字符集数据库数据同步

 zkl_jk 2014-05-20
ORACLE不同字符集数据库数据同步

问题:数据库A的字符集是US7ASCII,数据库B的字符集是ZHS16GBK,通过在数据库B上创建A的dblink查询A的数据但出现乱码。

解决方法:

在A库中创建一个视图,用utl_raw.cast_to_raw 函数对中文字段进行转换,在B库select该视图,用utl_raw.cast_to_varchar2函数对中文字段再转化一次

1.应用:   
在database a中:   
sql>select a.remark from a@db_link_b; db_link_b连到database b   
中文出现乱码。   
其中database a的数据库字符集为:AMERICAN_AMERICA.WE8ISO8859P1.   
database b的数据库字符集为:   
AMERICAN_AMERICA.UTF8.   
日常,database b的客户端用CHINESE_CHINA.ZHS16GBK 往数据库输入汉字。   
解决方案如下:   
1、先在database b,user b中建view,将中文字段用utl_raw.cast_to_raw转换   
 CREATE OR REPLACE VIEW view_1 (   
 remark   
 ) AS   
 SELECT Utl_Raw.cast_to_raw(remark) remark FROM b.table;   
2、在database a上用如下的sql来select就可以正常显示中文了:   
SELECT Convert(Convert(UTL_RAW.CAST_TO_VARCHAR2(remark),'ZHS16GBK','UTF8'),'WE8ISO8859P1') FROM b.view_1@db_link_b;   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多