oracle exp 导出字符集,oracle exp/imp 字符集
使用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 字符集相关推荐
- oracle exp导出工具,Oracle EXP/IMP 导出导入工具的使用
一. 导出工具 exp 1. 它是操作系统下一个可执行的文件 存放目录/ORACLE_HOME/bin exp导出工具将数据库中数据备份压缩成一个二进制系统文件.可以在不同OS间迁移 它有三种模式: ...
- oracle导入导出还原,Oracle 备份 还原 数据库 导入导出
导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP ROWS=N //不保存数据: 导出 EXP USER/PASSWORD@ODBC FILE=C:\***.DMP ...
- oracle设置导出权限,Oracle 创建 删除 用户 导出 导入 分配权限
//创建临时表空间 create temporary tablespace ezit_temp tempfile 'C:/Oracle/lenovo/oradata/orcl/ezit_temp01. ...
- oracle数据库导出和oracle导入数据的二种方法(oracle导入导出数据)
这篇文章主要介绍了oracle导入导出数据的二种方法,利用PL/SQL Developer工具导出和利用cmd的操作命令导出的出方法,大家参考使用吧 方法一:利用PL/SQL Developer工具导 ...
- oracle导出exp步骤,oracle数据导出导入(exp/imp)
1.本地数据库导入导出 1.导出 (运行---cmd中操作) exp 用户名/密码@数据库实例名file=本地存放路径 eg: exp jnjp/jnjp@ORCL file=C:/jnjp.dmp ...
- 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 ...
- oracle数据导出方法,oracle多种导入导出数据方法
dmp格式: 1.dmp格式的导出可以通过客户端工具(PL/SQL)操作来完成,通过菜单栏---->Tools---->Export Tables,然后设置勾选相应参数即可,rows代表是 ...
- oracle expdp导出教程,Oracle Expdp Impdp 数据泵导入导出
新建逻辑目录 Oracle不会自动创建实际的物理目录"D:\temp"(务必手动创建此目录),仅仅是进行定义逻辑路径dmp_dir: sql> conn username/p ...
- oracle 批量导出sequence,Oracle中批量導出Sequence
Java代碼 select'create sequence '||sequence_name|| ' minvalue '||min_value|| ' maxvalue '||max_value|| ...
- 使用sys导出oracle,oracle 让sys用户执行exp导出操作
oracle 让sys用户执行exp导出操作 [oracle@localhost ~]$ exp sys/abcdefg as sysdba full=y file=/tmp/full100.dmp ...
最新文章
- 数据结构源码笔记(C语言):B树的相关运算算法
- 关闭oracle自动统计,禁用Oracle 11g的统计数据自动收集功能
- PerfMon常用计数器
- MogDB数据库如何完美适配Grafana及Prometheus?
- 【Android游戏开发之八】游戏中添加音频-详解MediaPlayer与SoundPoo!并讲解两者的区别和游戏中的用途!...
- 的房费重构——上,下位机的复议
- 手把手教你通过Eclipse工程配置调用JNI完全攻略
- JScrollPane恢复正常滚动量
- 编程趣谈_k++_++k_k一行顺序输出,结果会有差异吗?
- 海康录像机能用别的摄像头吗_海康威视录像机如何添加大华摄像头
- 用pdftocairo将PDF图片转成svg矢量图
- Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
- Redirected Walking
- 操作系统 考研习题 详细解析(1)
- 互联网常见通用的运营数据指标
- 斗罗大陆壁纸图片高清小舞146集八段摔杨无敌
- Unity实现按Esc键控制面板出现消失,同时游戏暂停
- Android传感器Motion Sensor开发实验
- 阿里云物联网平台场景体验-阿里云开发者社区
- 源码交流网,提供50套商业源码免费下载