今天的心情真好,趁热打铁,不然过几天又懒惰不想写博客了:
过年前接到一个业务,将网络中其他数据库服务器上将某个表的内容放到本地的表中进行处理:
首先都是roalce数据库,网络通的,直接做个远程连接就可以了,心理偷着乐了一把,后来发现我高兴得早了点,原因是,对方的数据库字符集(AMERICAN_AMERICA.ZHS16GBK)和本地端的数据库字符集(AMERICAN_AMERICA.WE8ISO8859P1)不兼容,而原表中又存在中问字符,后来翻阅相关文档,找到资料,在双方的数据库中不用修改任何东西,使用utl_raw包,就能解决这一问题:
1:在对方端,由于不能直接访问原来的表,所以让对方将该表中的中文字符使用utl_raw.cast_to_raw将中文转换成raw类型后放在一个view中
Create view v_t as select id,data,cardid,utl_raw.cast_to_raw(name) from t;
2:再将视图中的raw转换成varchar2类型就可以了
现在可以直接insert了:
Insert into birth_his select id,data,cardid,utl_raw.cast_to_varchar2(name) from v_t@linkdb;
这样放在本地的数据库中,访问的时候就不会出现乱码。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29997949/viewspace-1728477/ ,如需转载,请注明出处,否则将追究法律责任。