我要导入一个dmp文件,导入时提示导出客户机使用 US7ASCII 字符集 (可能的字符集转换)
导出服务器使用 UTF8 NCHAR 字符集 (可能的 ncharset 转换)US7ASCII 是UTF8 的子集吧,这种情况下这个dmp文件已经产生数据丢失了吧,我怎么弄中文都是乱码了吧。

解决方案 »

  1.   


    看下imp 日志是怎么说的? 检查2个数据库的字符集看看.. SQL>select userenv(‘language’) from dual; 
    AMERICAN _ AMERICA. ZHS16GBK 
    可以参考下blog:Oracle 字符集的查看和修改
    http://blog.csdn.net/tianlesoftware/archive/2009/12/02/4915223.aspx
    ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716 
      

  2.   

    导入的时候,dmp文件只要是导入服务端字符集的子集就没问题.
    但是如果从服务器导出时,客户端与服务端字符集不兼容的话,那么dmp文件就已经是乱码了,再导入肯定是乱码.
      

  3.   

    1. 按正常方法把原数据库实例的用户数据导出到一个文件中;
    2. 使用SQLPLUS连接到目的数据库实例;
    3. 使用select * from V$NLS_PARAMETERS查看当前数据库实例的字符集;
    4. 断开连接;
    5. 修改oracle客户端的注册表中的字符集为原数据库实例的字符集(SIMPLIFIED CHINESE_CHINA.ZHS16GBK);
    6. 连接到目的数据库实例;
    7. 使用create database character set 原数据库实例的字符集(ZHS16GBK);
    8. 开始导入数据到目的数据库实例的用户中;
    9. 使用create database character set “目的数据库实例的字符集(US7ASCII)”;
    10.修改oracle客户端的注册表中的字符集为目的数据库实例的字符集(AMERICAN_AMERICA.US7ASCII);