oracle的导入问题

lutter 2003-12-17 03:36:49
我原来用的是ORACLE7.3现在想将数据导入到ORACLE8中,可是用IMP命令提示错误:IMP-00016: 不支持要求的字符集转换(从类型850到852)!!!请问各位高手,这个问题能解决吗?还有别的办法把数据倒过来吗?多谢了
...全文
42 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
daydayupliq 2003-12-24
  • 打赏
  • 举报
回复
from csdn.net


使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可,如uedit32。用编辑方式打开导出的dmp文件,获取2、3字节的内容,如00 01,先把它转换为10进制数,为1,使用函数NLS_CHARSET_NAME即可获得该字符集:(ultraedit 打开几百M到上G的文件很慢,我试了winHex,哪个速度啊,闪电!)
SQL> select nls_charset_name(1) from dual;
NLS_CHARSET_NAME(1)
-------------------
US7ASCII
可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK,则需要用NLS_CHARSET_ID获取该字符集的编号:
SQL> select nls_charset_id('zhs16gbk') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852
把852换成16进制数,为354,把2、3字节的00 01换成03 54,即完成了把该dmp文件字符集从us7ascii到zhs16gbk的转化,这样,再把该dmp文件导入到zhs16gbk字符集的数据库就可以了。(注意,十进制数与十六进制之间的转换,想明白其中的道理)

SQL> select nls_charset_id('zhs16cgb231280') from dual;

NLS_CHARSET_ID('ZHS16CGB231280')
--------------------------------
850

字符集 代码(十进制) 对应的dmp文件(2、3字节/二进制)
ZHS16CGB231280 850 03 52
ZHS16GBK 852 03 54

black_snail 2003-12-17
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=112444
softrookie 2003-12-17
  • 打赏
  • 举报
回复
字符集只能由小往大方向转

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧