Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题
影响Oracle数据库字符集最重要的参数是NLS_LANG参数。
它的格式如下: NLS_LANG = language_territory.charset
它有三个组成部分(语言、地域和字符集),每个成分控制了NLS子集的特性。
其中:
Language: 指定服务器消息的语言, 影响提示信息是中文还是英文
Territory: 指定服务器的日期和数字格式,
Charset: 指定字符集。
公司有两个Windows环境下的数据库,版本不同,一个是11g r2,另一个是10g r2,先说说需求:我要从11g r2导出数据库,导入到10g r2中,要求不能有乱码问题,包括字段注释。
1、我先进11g所在系统,导出数据库。
exp NJ_ZHFW/NJ_ZHFW@10.194.186.14:1521/ORCL file=E:\dmp\NJ_ZHFW20170612.dmp owner=NJ_ZHFW;
2、oracle导出的dmp文件字符集由当前数据库字符集编码格式决定的,和客户端没关系。
进入服务端查看字符集:select userenv('language') from dual;
如果有dmp文件但进不去数据库所在系统,那么只能通过查看dmp来确认字符集编码格式。如何查询/修改dmp文件的字符集

字符集编码是:ZHS16GBK
3、知道了dmp文件的字符集是什么了,那么就到10g环境下导入。
a、先查看服务端的字符集编码,这里是AL32UTF8,是支持中文的编码,所以不需要改动。
改动服务端编码请看这里:oracle 修改服务端字符集编码

b、修改dmp文件版本,因为是从高版本导入低版本,V11.02.00 改成 V10.02.00

c、临时修改环境变量,在命令行中设置NLS_LANG为环境变量,它将覆盖注册表和系统属性中的NLS_LANG的定义。
在Windows下通过set nls_lang来设置,只是Session级别的,关闭cmd窗口后再打开,就又变为原来的设置了。
注意,在这里我们要将环境变量NLS_LANG的字符集编码设置成dmp的字符集编码,这样我们的cmd窗口作为客户端才能够正确编译dmp文件
echo %NLS_LANG% //查看环境变量
set nls_lang=AMERICAN_AMERICA.ZHS16GBK

d、导入dmp文件
imp NJ_ZHFW/NJ_ZHFW@192.168.28.111:1521/orcl file=D:\Database\NJ_ZHFW20170612.dmp full=y;

参考资源:
Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题 http://blog.csdn.net/haiross/article/details/18225415
环境变量NLS_LANG http://www.cnblogs.com/justuntil/p/5636574.html
Oracle 客户端 NLS_LANG 的设置(转) http://www.cnblogs.com/softidea/p/3974907.html
如何查看查询oracle字符集、 修改设置字符集以及常见的oracle utf8字符集和oracle exp 字符集问题。 http://blog.csdn.net/shen020453/article/details/51013408
oracle exp/imp 字符集 http://www.cnblogs.com/chinhr/archive/2010/01/19/1651502.html
Oracle之 dmp导入/导出、数据库操作等过程中的字符集问题的更多相关文章
- 配置toad进行导入导出数据库操作
最近需要对oracle进行导入导出操作,于是研究使用toad进行导入导出oracle数据库操作,现稍作记录. oracle的导入导出不管是否使用toad还是pl/sql工具进行操作,实际上最终都是通过 ...
- 数据库(学习整理)----7--Oracle导入导出数据库文件
Oracle导入本地数据库操作手册 1.旧数据库忘记了密码,首先进入cmd:1)输入:sqlplus/nolog2)输入:connect/as sysdba3)输入:alter user sys id ...
- Oracle 数据泵导入导出总结
Oracle 数据泵(IMPDP/EXPDP)导入导出总结 Oracle数据泵导入导出是日常工作中常用的基本技术之一,它相对传统的逻辑导入导出要高效,这种特性更适合数据库对象数量巨大的情形,因为我日常 ...
- mysql 导入导出数据库、数据表的方法
mysql 导入导出数据库.数据表的方法. Linux操作系统中,均在控制台下操作.1,导入数据库:前提:数据库和数据表要存在(已经被创建)(1)将数据表 test_user.sql 导入到test ...
- linux下导入导出数据库
导入导出数据库用mysqldump命令,使用方法与mysql命令类似. 导出 导出sql(包含数据和表结构):mysqldump -uroot -p dbname > dbname.sql 导出 ...
- MySql导入导出数据库(含远程导入导出)
一.导入导出本地数据库 导出: 1.先运行cmd,cd 到mysql安装目录中的bin文件夹 2.mysqldump -u root -p 数据库名 > 导出文件名.sql 其他情况下: ...
- mysqldump导入导出数据库总结
mysqldump导入导出数据库总结 基本的使用方法总结: 1 导出所有库 系统命令行 mysqldump -uusername -ppassword --all-databases > all ...
- MySQL导入-导出数据库-mac版
MySQL导入-导出数据库-mac版 导出数据库-表结构,和数据 mysqldump -u 账号 -p 数据库名 表 > 文件名.sql 例如:mysqldump -u root -p test ...
- ORACLE 远程导入导出数据库
Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. ...
随机推荐
- Echarts整合spring boot进行开发
一.开始前的准备 Echarts官网下载: https://echarts.baidu.com/download.html
- 最新版的Chrome如何始终开启flash而不是先询问?
链接:https://www.zhihu.com/question/266170237/answer/342137190 设置Chrome启用Flash,修改配置之前先看Chrome的版本,不同版 ...
- New需谨慎
New is Glue When you’re working in a strongly typed language like C# or Visual Basic, instantiating ...
- HBase和MongoDB的区别
Mongodb用于存储非结构化数据,尤其擅长存储json格式的数据.存储的量大概在10亿级别,再往上性能就下降了,除非另外分库.Hbase是架构在hdfs上的列式存储,擅长rowkey的快速查询,但模 ...
- 【Core】.NET Core 部署在Linux
安装.NET Core SDK 在CentOS上 1.右键打开命令行: 2.为了安装.NET,需要注册微软签名密钥和添加微软相关的支持.这个操作每台机器只能做一次. Add the dotnet p ...
- SpringMVC 拦截器HandlerInterceptor(一)
HandlerInterceptor 接口: 进入 Handler方法之前执行比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行 boolean preHandle(HttpS ...
- Angular 学习笔记 (组件沟通的思考)
组件指令间经常需要沟通 我们知道的方式有 input output service inject viewchild contentchild templateRef template variabl ...
- Practical Node.js (2018版) 第8章:Building Node.js REST API Servers
Building Node.js REST API Servers with Express.js and Hapi Modern-day web developers use an architec ...
- 弹性盒式布局flexbox(dispaly:flex)
display:flex flex-direction: row(行)/column(列)/row-reverse/column-reverse反方向 //布局 justify-content: s ...
- 『Python』库安装
1.安装指定版本的tensorflow 虽然官网有4种安装方式,并且推荐用anaconda的方式,但是有时候我们需要指定版本的tensorflow,而pip可以做到. 比如我装的是anaconda3. ...