ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 通过exp/imp跨字符集迁移数据~

通过exp/imp跨字符集迁移数据~

原创 Linux操作系统 作者:zergduan 时间:2009-02-24 14:32:36 0 删除 编辑

数据库A 字符集CA

数据库B 字符集CB

如果CA字符集为CB字符集的子集,可以通过修改dmp文件,来实现数据库A中的数据导入数据库B中.

1.在数据库A上NLS_LANG=CA,exp 导出dmp文件

2.以16进制方式打开dmp文件,修改第2和第3字节,以US7ASCII导入ZHS16GBK为例:

SQL> SELECT nls_charset_id('US7ASCII') FROM dual;
 
NLS_CHARSET_ID('US7ASCII')
--------------------------
                         1
 
SQL> SELECT nls_charset_id('ZHS16GBK') FROM dual;
 
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
                       852
 
00 01 = 1

03 54 =3*16*16 + 5*16 + 4 =852

修改第2和第3字节 00 01 ---> 03 54

3.在数据库B上NLS_LANG=CB,imp 导入dmp文件

注: FTP dmp文件一定要用bin模式。此方法对于10g数据库无效,详情:

http://www.itpub.net/viewthread.php?tid=1129133&extra=&page=2

字符集 子集和超集对应关系 请查看:

Oracle® Database Globalization Support Guide

Subsets and Supersets

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/386081/viewspace-557565/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-03-12

  • 博文量
    77
  • 访问量
    750931