当前位置:  数据库>oracle

最好的修改Oracle字符集文档

    来源: 互联网  发布时间:2017-03-23

    本文导语:   测试的时候,本机Oracle安装采用了utf8字符集,而项目的要求是gbk字符集,为了防止以后有不同字符集数据信息导入导出的问题,整理以下文档。   修改Oracle字符集新装了Oracle,装为AL32UTF8格式,无奈一个工程导出包是ZHS16GBK...

  测试的时候,本机Oracle安装采用了utf8字符集,而项目的要求是gbk字符集,为了防止以后有不同字符集数据信息导入导出的问题,整理以下文档。

  修改Oracle字符集新装了Oracle,装为AL32UTF8格式,无奈一个工程导出包是ZHS16GBK格式,想了想办法转换,以下是学习

  一、什么是Oracle字符集

  Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。Oracle 支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。

  影响Oracle数据库字符集最重要的参数是NLS_LANG参数。它的格式如下:

  NLS_LANG = language_territory.charset

  它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。其中:

  Language 指定服务器消息的语言,territory 指定服务器的日期和数字格式,charset 指定字符集。如:AMERICAN _ AMERICA. ZHS16GBK

  从NLS_LANG的组成我们可以看出,真正影响数据库字符集的其实是第三部分。所以两个数据库之间的字符集只要第三部分一样就可以相互导入导出数据,前面影响的只是提示信息是中文还是英文。

  二、如何查询Oracle的字符集

  很多人都碰到过因为字符集不同而使数据导入失败的情况。这涉及三方面的字符集,一是oracel server端的字符集,二是Oracle client端的字符集;三是dmp文件的字符集。在做数据导入的时候,需要这三个字符集都一致才能正确导入。

  1、查询Oracle server端的字符集

  有很多种方法可以查出Oracle server端的字符集,比较直观的查询方法是以下这种:SQL>select userenv(‘language’) from dual;

  结果类似如下:AMERICAN _ AMERICA. ZHS16GBK (本机结果SIMPLIFIED CHINESE_CHINA.AL32UTF8)

  2、如何查询dmp文件的字符集

  用Oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:

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

  ZHS16GBK

  如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):

  cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

  然后用上述SQL也可以得到它对应的字符集。

  3、查询Oracle client端的字符集

  这个比较简单。在windows平台下,就是注册表里面HKEY_LOCAL_MACHINESOFTWAREOracleHOME0NLS_LANG 。还可以在dos窗口里面自己设置,比如:

  set nls_lang=AMERICAN_AMERICA.ZHS16GBK

  这样就只影响这个窗口里面的环境变量。

  在unix平台下,就是环境变量NLS_LANG。

  $echo $NLS_LANG

  AMERICAN_AMERICA.ZHS16GBK

  如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问哪有syslogd.c文件下载,最好是比较权威的,没有被修改过
  • 请问开发java的环境最好是在什么地方啊,用vj++是不是最好啊
  • 在网络数据传输中,为了降低数据传输量,用哪种算法最好,有哪位大虾帮忙吗?最好有JAVA源代码
  • win2000下开发Jsp用什么工具和服务器最好,最好是免费的:)
  • 什么样的中文linux最好
  • 想学qt,大哥大姐前辈们介绍几本书吧,最好能提供电子版,谢谢~~~~~~~~~~~
  • 哪一种语言平台最好
  • linux下远程管理,哪个软件最好?
  • 哪有最好的java反编译器
  • 谁有unix X-window中文平台,最好是炎黄中文
  • 游戏最好用什么软件做呀?
  • c/c++开源软件 iis7站长之家
  • ¥¥¥¥¥请教,什么是LINUX上最好的C++集成开发环境
  • 学Linux最好的方法和工具是什么?(分数多多)
  • 怎样才能用java实现结构体数组,最好有代码!谢了!送上100分!!!!
  • 请问Linux下最流行的/最好的代理服务器是什么?
  • 那里可以下载JDK的帮助文档,最好是中文的!!谢谢!
  • 小弟想学linux,推荐几本好书,有电子版下载的最好.
  • 求最好的解决方法
  • 那里可以得到Kdevelop的帮助文档(最好是中文),谢谢
  • 请问哪里有jboss有关配置的教程,最好是中文的,先谢了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3