Oracle实现US7ASCII到ZHS16GBK数据迁移正常显示中文

一、需求如下:

数据库A:US7ASCII字符集

数据库B:ZHS16GBK字符集

实现数据库A中数据迁移到数据库B中

二、解决方案如下:

1、在数据库A中创建试图:

-- 只列出两个字段作为测试,其中nsrmc为中文,需要进行处理。

create or replace view view_dj_nsrxx as
select NSRDZDAH,
utl_raw.cast_to_raw(nsrmc) nsrmc
from dj_nsrxx;

2、在数据库B中创建到数据库A的DBLink。

-- 我创建的DLink名为:taxsms.regress.rdbms.dev.us.oracle.com

3、在数据库B中创建目标的视图或表

 create or replace view view_dj_nsrxx as
select NSRDZDAH,
utl_raw.cast_to_varchar2(nsrmc) nsrmc

from view_dj_nsrxx@taxsms.regress.rdbms.dev.us.oracle.com;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库从ZHS16GBK字符集迁移到UTF8字符集需要经过以下步骤: 1. 确认数据库版本和字符集 在迁移前,需要确认数据库版本和当前使用的字符集。可以使用以下命令查询: ``` SELECT * FROM v$version; SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; ``` 2. 备份数据库 在进行任何操作前,一定要备份数据库以防止数据丢失。 3. 准备新的数据库 创建一个新的Oracle数据库,使用UTF8字符集。 4. 导出数据 使用Oracle自带的数据导出工具exp进行数据导出。在导出时,需要将字符集设置为ZHS16GBK,以保证数据正确导出。例如: ``` exp userid=system/manager file=mydb.dmp log=mydb.log \ CONSISTENT=Y DIRECT=Y ROWS=Y \ BUFFER=1048576 RECORDLENGTH=65535 \ CHARSET=ZHS16GBK ``` 5. 数据 将导出的数据文件中的字符集从ZHS16GBK换为UTF8。可以使用iconv等工具进行换。 6. 导入数据 使用Oracle自带的数据导入工具imp将换后的数据导入到新的数据库中。在导入时,需要将字符集设置为UTF8,以保证数据正确导入。例如: ``` imp userid=system/manager file=mydb_utf8.dmp log=mydb_utf8.log \ FULL=Y IGNORE=Y \ BUFFER=1048576 ROWS=Y \ CHARSET=UTF8 ``` 7. 修改字符集 在数据导入完成后,需要修改新数据库的字符集为UTF8。可以使用以下命令进行修改: ``` ALTER DATABASE CHARACTER SET UTF8; ``` 8. 检查数据 完成以上步骤后,需要检查数据是否正确迁移。可以使用以下命令检查: ``` SELECT * FROM nls_database_parameters WHERE parameter LIKE '%CHARACTERSET%'; ``` 同时,还需要进行一些其他的检查,例如检查数据是否乱码等。若有问题,需要及时处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值