关于通过导数据出现的oracle字符集问题

    导入的dmp文件和目标数据库字符集不一样,会报导入数据错误。解决办法有两个:

一、把目标数据库的字符集改成与DMP文件的字符集一样

     查看当前数据库字符集 :select userenv('language') from dual;

     修改数据库字符集:

     

1.       关闭数据库

SQL>SHUTDOWN IMMEDIATE

2. 启动到Mount

SQL>STARTUP MOUNT;

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;

SQL>ALTER DATABASE OPEN;

--这里可以从父集到子集

SQL>ALTER DATABASE CHARACTER SET ZHS16GBK;

SQL>ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;

--如果是从子集到父集,需要使用INTERNAL_USE 参数,跳过超子集检测

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE AL32UTF8;

SQL>ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL32UTF8;

然后重启即可

二、修改DMP文件的字符集

  用UE编辑器打开,切换到16进制模式,修第一排第二个和第三个字符,0354为ZHS16GBK字符集,改了就可以了。可在数据库里查询对应字符集的编码如下:

 select nls_charset_name(to_number('0354','xxxx')) from dual;

所以在导入或导出数据的时候,最好是看一下字符集,免得出问题,在安装数据库的时候,一定不要用默认值,自己手动选择一下这样更好;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值