Oracle字符集

Oracle字符集

ZHS16GBK > ZHS16CGB231280
国际标准中,前者包含后者;在Oracle中不是直接包含关系,不能直接将gb231280转成gbk。

Exp和Imp时,要保证以下四个字符集设置:
1、源数据库的字符集
2、操作Exp的计算机的NLS_LANG环境变量
3、操作Imp的计算机的NLS_LANG环境变量
4、目标数据库的字符集

注1:查看数据库字符集
select * from nls_database_parameters,“NLS_CHARACTERSET"对应的值就是字符集。

注2:修改Oracle字符集
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
(注意:使用”update props$ set value$='ZHS16GBK' where name='NLS_CHARACTERSET';,然后commit重启服务器“这种方式修改Oracle字符集存在很大隐患,可能导致各种不确定错误,不可使用。)

Oracle字符集说明:
    Oracle NLS_CHARACTERSET value
    Language

    ZHS16CGB231280
    Chinese Simplified (GB2312)
    gb2312
    chinese, csGB2312, csISO58GB231280, GB2312, GB_2312-80, iso-ir-58

    ZHS16GBK
    Chinese Simplified (Windows)
    windows-9361
    windows-936

    ZHT16BIG5
    Chinese Traditional
    big5
    csbig5, x-x-big5

    ZHT16MSWIN950
    Chinese Traditional
    windows-950

    ISO2022-CN
    Chinese
    iso-2022-cn2
    csISO2022CN

    ZHT32EUC
    Chinese Traditional (EUC-TW)
    EUC-TW1

    ISO2022-JP
    Japanese (JIS)

    JA16EUC
    Japanese (EUC)

    JA16SJIS
    Japanese (Shift-JIS)

    KO16KSC5601
    Korean

    ISO2022-KR
    Korean (ISO)

    KO16MSWIN949
    Korean (Windows)

    UTF8
    Universal (UTF-8)
    utf-8
    unicode-1-1-utf-8, unicode-2-0-utf-8, x-unicode-2-0-utf-8
   
注3:修改客户端字符集
查看环境变量:set命令
修改环境变量:
A:Linux / Unix
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG

B:Windows
set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

说明:Oracle通过NLS_LANG来设置客户端字符集,NLS_LANG由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characterset>,例如NLS_LANG=AMERICAN_AMERICA.ZHS16GBK。
打开注册表:HKEY_LOCAL_MACHINE|SOFTWARE|ORACLE,修改注册表下nls_lang键值(包括oracle下、ID0和HOME0下的nls_lang都修改)

实例一(ZHS16CGB231280->ZHS16GBK):
1、问题:从源数据库(Oracle9i,ZHS16CGB231280字符集)直接使用exp导出dmp文件,然后imp导入到目标数据库(Oracle10g,ZHS16GBK字符集)后,表数据的中文没问题,但表结构的注释等中文信息变成了一堆问号。
2、解决:使用exp导出前,先设置系统环境变量:NLS_LANG=AMERICAN_AMERICA.ZHS16GBK,然后执行exp导出。这种方式导出的dmp文件复制到目标数据库服务器,使用imp导入后,表数据和表结构等中文信息都是正常中文了。

实例二(ZHS16GBK->ZHS16CGB231280):
1、问题:从源数据库(Oracle10g,ZHS16GBK)使用exp导出dmp文件,然后imp到目标库(Oracle9i,ZHS16CGB231280)时不成功,提示文件格式不正确。原因:高版本exp导出的dmp文件不能使用低版本imp进行导入。
2、解决:使用Oracle9i的exp来导出10g的数据。由于9i所在数据库服务器环境变量设置NLS_LANG=AMERICAN,导致在9i服务器上查询10g的表时,表内中文数据无法显示(一堆问号),这时可设置环境变量EXPORT NLS_LANG=AMERICAN_AMERICA.ZHS16GBK,此时中文显示就正常了。然后使用9i的exp导出10g数据,然后imp导入到9i中,成功,表数据和表结构注释等中文显示都没问题。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值