数据库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博客 ” ,链接:https://blog.itpub.net/386081/viewspace-557565/ ,如需转载,请注明出处,否则将追究法律责任。