导入不同字符集的数据

如下操作在 windows 下进行------------------------

把 Data_A 数据库的 *.DMP 文件导入到 Data_B 数据库。
导入时出错:
-(Error)----------------------------------------------------------------------------------
IMP-00016: required character set conversion (type 31 to 852) not supported
IMP-00000: Import terminated unsuccessfully
-------------------------------------------------------------------------------------------

查看所对应的字符集:
SQL> select nls_charset_name('31') from dual;

NLS_CHARSET_
------------
WE8ISO8859P1

SQL> select nls_charset_name('852') from dual;

NLS_CHAR
--------
ZHS16GBK


================================================================
Data_A -> Data_B
思路: 修改 Data_B 库的字符集为 "31" -> 导入数据 -> 恢复为 "852"
字符集修改: 是 修改数据字典;修改注册表 两步.

强烈提醒:
   -------------------------------------------------------------------------------------------
   1.先对当前数据库进行备份,再导入新的数据。以防在导入过程中产生意外。
   2.由于字符集的不同,数据不一定可以完全进行使用。
   -------------------------------------------------------------------------------------------

具体做法:
    1.修改 Data_B 库的字符集.
     1.1 修改注册表
         "HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE" 中的 "NLS_LANG" 键值
            "SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 改成 "American_America.WE8ISO8859P1"

         注意: 根据安装的不同,主要用{Oracle 库的HOME}目录
           目录也许为:  "HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0"  <- (HOME1,HOME2...)
           视 注册表 里为准.
     1.2 修改 数据字典
         SQL>CONNECT sys/chanet@oradb;
         SQL>UPDATE sys.props$
                 SET value$='WE8ISO8859P1' WHERE name='NLS_CHARACTERSET';
         SQL>UPDATE sys.props$
                 SET value$='WE8ISO8859P1' WHERE name='NLS_NCHAR_CHARACTERSET';
         SQL>commit;
    
     1.3 重启Oracle库"服务"

    2. 导入数据库.(imp....)

    3. 修改会之前的 "852" 字符集.
      3.1 修改数据字典.
        SQL>CONNECT sys/chanet@oradb;
        SQL>UPDATE sys.props$
                SET value$='ZHS16GBK' WHERE name='NLS_CHARACTERSET';
        SQL>UPDATE sys.props$
                SET value$='ZHS16GBK' WHERE name='NLS_NCHAR_CHARACTERSET';
        SQL>commit;

      3.2 修改注册表.
         "HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE" 中的 "NLS_LANG" 键值
            "American_America.WE8ISO8859P1" 改回 "SIMPLIFIED CHINESE_CHINA.ZHS16GBK"

      3.3 重启数据库 "服务"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值