使用ultraedit32打开导出的dmp文件,文件内容以十六进制显示数据,其中第二、三字节的数据记录的是此文件的字符集。

例如:

03 54

将其转换为10进制,值为852,使用命令

select nls_charset_name(852) from dual

得到结果

ZHS16GBK

当前使用winXP简体中文操作系统,Oracle客户端默认字符集为GBK。

创建数据库,设定数据库字符集、国家字符集为UTF8,如须在此操作系统上导出文件,并导入至另一winXP简体中文操作系统

服务器上,须将客户端字符集修改为UTF8。

方法一:将dmp文件二、三字节修改为oracle字符集名对应的id值

例如,使用命令select nls_charset_id('UTF8') from dual,得到结果为871

将871转换为十六进制为03 67,即,把03 54 改为 03 67

导入修改后的dmp文件

方法二:修改注册表项NLS_LANG的值为UTF8

在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置。

NLS_LANG参数由以下部分组成:

NLS_LANG=_.

NLS_LANG各部分含义如下:

LANGUAGE指定:

-Oracle消息使用的语言

-日期中月份和日显示

TERRITORY指定

-货币和数字格式

-地区和计算星期及日期的习惯

CHARACTERSET:

-控制客户端应用程序使用的字符集

通常设置或者等于客户端(如Windows)代码页

或者对于unicode应用设置为UTF8

在Windows上查看当前系统的代码页可以使用chcp命令:

E:\>chcp

活动的代码页: 936

代码页936也就是中文字符集 GBK。

通常在导出时最好把客户端字符集设置得和数据库端相同,这样可以避免在导出时发生不必要的数据转换,导出文件将和数据库具有相同的字符集。

即使将来会把导出文件导入到不同字符集的数据库中,这样做也可以把转换延缓至导入时刻。

当进行数据导入时,主要存在以下两种情况:

1.源数据库和目标数据库具有相同字符集设置

这时,只需要设置NLS_LANG等于数据库字符集即可导入(前提是,导出使用的是和源数据库相同字符集,即三者相同)

2.源数据库和目标数据库字符集不同

如果我们导出时候使用的NLS_LANG是和源数据库相同的字符集,那么导入时就可以设置客户端NLS_LANG等于导出时使用的字符集,这

样转换只发生在数据库端,而且只发生一次。

dmp文件用UltraEdit打开查看十六进制文件,第2-3个字节表示字符集,假如是"00 01"。

在Unix上我们可以通过以下命令来查看:cat expdat.dmp | od -x | head

查看这个十六进制id的十进制:

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

TO_NUMBER(1,'XXXX')

-------------------

1

查看这个十进制id表示的字符集:

SQL> select nls_charset_name(1) from dual;

NLS_CHARSET_NAME(1)

----------------------------------------

US7ASCII

查看目标字符集的十进制id:

SQL> select nls_charset_id('zhs16gbk') from dual;

NLS_CHARSET_ID('ZHS16GBK')

--------------------------

852

查看这个十进制id的十六进制:

SQL> select to_char(852,'xxxx') from dual;

TO_CHAR(852,'XXXX')

--------------------------------------------------------------------------------

354

dmp文件用UE打开,把"00 01"改为"03 54"即完成了字符集的转换。

查询数据库中有效的字符集可以使用以下脚本:

col nls_charset_id for 9999

col nls_charset_name for a30

col hex_id for a20

select nls_charset_id(value) nls_charset_id, value nls_charset_name, to_char(nls_charset_id(value),'xxxx') hex_id

from v$nls_valid_values

where parameter = 'CHARACTERSET'

order by nls_charset_id(value);

查询oracle server字符集:

select * from v$nls_database_parameters;

查询客户端登陆session字符集:

select * from v$nls_session_parameters;

通常在我们的现实环境中,存在3个字符集设置。 第一: 客户端应用字符集(Client Application Character Set) 第二: 客户端NLS_LANG参数设置 第三: 服务器端,数据库字符集(Character Set)设置 我们说,一个字符在客户端应用(比如SQLPLUS,CMD,NOTEPAD等)中以怎样的字符显示取决于客户端操作系统,客户端能够显示怎样的字符, 我们就可以在应用中录入这些字符,至于这些字符能否在数据库中正常存储,就和另外的两个字符集设置紧密相关了。 在传输过程中,客户端NLS_LANG主要用于进行转换判断 如果NLS_LANG等于数据库字符集,则不进行任何转换直接把字符插入数据库 如果不同则进行转换,转换主要有两个任务 如果存在对应关系,则把相应二进制编码经过映射后(这一步映射以后,所代表的字符可能发生转换)传递给数据库 如果不存在对应关系,则传递一个替换字符(很多平台就是?) 数据库字符集,在和客户端NLS_LANG不同时,会把经过NLS_LANG转换的字符进行进一步处理 对于?(即不存在对应关系的字符)直接以?形式存放入数据库 对于其他字符,在NLS_LANG和数据库字符集之间进行转换后存入。

oracle exp 导出字符集,oracle exp/imp 字符集相关推荐

  1. oracle exp导出工具,Oracle EXP/IMP 导出导入工具的使用

    一. 导出工具 exp 1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 它有三种模式: ...

  2. oracle导入导出还原,Oracle 备份 还原 数据库 导入导出

    导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP ROWS=N //不保存数据: 导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP  ...

  3. oracle设置导出权限,Oracle 创建 删除 用户 导出 导入 分配权限

    //创建临时表空间 create temporary tablespace ezit_temp tempfile 'C:/Oracle/lenovo/oradata/orcl/ezit_temp01. ...

  4. oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)

    这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...

  5. oracle导出exp步骤,oracle数据导出导入(exp/imp)

    1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...

  6. linux下 exp导出时报sh:exp:找不到,是什么原因,exp/imp(导出/导入)

    exp ccntbpm_kj/yiyangJtwz0726@CCNT62 file=d:\db_62_bak\ccntbpm_kj_62_20131114.dmp log=d:\db_62_bak\c ...

  7. oracle数据导出方法,oracle多种导入导出数据方法

    dmp格式: 1.dmp格式的导出可以通过客户端工具(PL/SQL)操作来完成,通过菜单栏---->Tools---->Export Tables,然后设置勾选相应参数即可,rows代表是 ...

  8. oracle expdp导出教程,Oracle Expdp Impdp 数据泵导入导出

    新建逻辑目录 Oracle不会自动创建实际的物理目录"D:\temp"(务必手动创建此目录),仅仅是进行定义逻辑路径dmp_dir: sql> conn username/p ...

  9. oracle 批量导出sequence,Oracle中批量導出Sequence

    Java代碼 select'create sequence '||sequence_name|| ' minvalue '||min_value|| ' maxvalue '||max_value|| ...

  10. 使用sys导出oracle,oracle 让sys用户执行exp导出操作

    oracle 让sys用户执行exp导出操作 [oracle@localhost ~]$ exp sys/abcdefg as sysdba full=y file=/tmp/full100.dmp ...

最新文章

  1. 数据结构源码笔记(C语言):B树的相关运算算法
  2. 关闭oracle自动统计,禁用Oracle 11g的统计数据自动收集功能
  3. PerfMon常用计数器
  4. MogDB数据库如何完美适配Grafana及Prometheus?
  5. 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!...
  6. 的房费重构——上,下位机的复议
  7. 手把手教你通过Eclipse工程配置调用JNI完全攻略
  8. JScrollPane恢复正常滚动量
  9. 编程趣谈_k++_++k_k一行顺序输出,结果会有差异吗?
  10. 海康录像机能用别的摄像头吗_海康威视录像机如何添加大华摄像头
  11. 用pdftocairo将PDF图片转成svg矢量图
  12. Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
  13. Redirected Walking
  14. 操作系统 考研习题 详细解析(1)
  15. 互联网常见通用的运营数据指标
  16. 斗罗大陆壁纸图片高清小舞146集八段摔杨无敌
  17. Unity实现按Esc键控制面板出现消失,同时游戏暂停
  18. Android传感器Motion Sensor开发实验
  19. 阿里云物联网平台场景体验-阿里云开发者社区
  20. 源码交流网,提供50套商业源码免费下载

热门文章

  1. 有趣的动态规划题目(一)
  2. 即将改变世界的力量:2021年最具影响力的科技预测
  3. linux下java调用matlab方案
  4. 计算机组成原理mips与arm,计算机组成原理之MIPS指令系统和MIPS体系结构
  5. Git下载慢,经常超时 关联远程仓库
  6. ElasticSearch分布式搜索引擎从入门到实战应用(入门篇-基本命令操作)
  7. tflearn教程_TensorFlow TFLearn安装和使用
  8. TFLearn入门实例
  9. tflearn自定义损失函数
  10. 做个it女人不容易呀