解决不同字符集数据库间的数据同步问题-入门基础

  • 来源: 互联网 作者: rocket   2008-03-19/10:17
  • 解决不同字符集数据库间的数据同步问题:

    1、首先在原数据库上做一个视图,对保存汉字的字段,加包函数utl_raw_cast_to_raw(保存汉字的字段)

    2、在新数据库上,做个数据库连接,连接指向原数据库,之后对步骤1中的视图中,使用了

    utl_raw_cast_to_raw的字段,再用utl_raw_cast_to_varchar2函数转换回来,

    具体测试环境和测试方法:


    10.0.10.108:testdb zhs16gbk
    10.10.10.166:gsweb us7ascii bitscn.com
     

     


    1.在108的testdb数据库中建一个表 itax.city 其中有一列name中保存汉字

    2.增加一个视图如:


    CREATE VIEW V_CITY AS SELECT UTL_RAW.CAST_TO_RAW(NAME) AS NAME FROM CITY;
    SELECT * FROM V_CITY;

    3.在167机器上的tnsnames.ora文件中增加到108的连接入口

    在gsweb数据库中增加到108的数据库链路,如:


    SQL>
    create public database link testdb connect to itax
    identified by itax using 'testdb';

    Database link created. 
     

    4.在gsweb数据库查询


    select utl_raw.cast_to_varchar2(name) from V_city@testdb 
     

    5.不能基于视图来建立物化视图,所以只能先建一个缓冲表,然后每天使用存储过程来填充此表,

    以达到同步数据之目的

    另外,如果仅做查询使用,则在目的数据库上增加一个视图即可。

    如下所示:

     


    CREATE VIEW V_fg_wh AS SELECT UTL_RAW.CAST_TO_RAW(fg_wh) AS fgwh FROM fg_wh; bitsCN_com
     

    目的数据库上的数据链路:


    create public database link gsweb connect to gs12366
    identified by htjs_12366 using 'gsweb'; bitsCN_com
     

     


    create view fg_wh as
    select utl_raw.cast_to_varchar2(fgwh) fgwh from v_fg_wh@gsweb
     

     

     


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多