【oracle 数据导入导出字符问题】
在数据库导入导出过程中或加载外部表的数据时,有时会遇到导入,加载外部数据到库时会出现乱码,引起这个种乱码问题有可能是oracle字符集、客户端字符集、操作系统字符集不一致所导致的。
一、字符集查询方法
1、服务端字符集
select userenv('language') from dual;
select * from nls_database_parameters;
2、操作系统字符集
linux: echo $NLS_LANG
cat .bash_profile
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
windows:
C:\Users\zhouji>chcp
活动代码页: 936 (对应简体中文GBK)
设置在注册表中永久设置或临时设置
set nls_lang=AMERICAN_AMERICA.ZHS16GBK
3、客户端字符集
select * from nls_instance_parameters
linux:export NLS_LANG=
备注:三者一致,数据导入,导出、加载外部表不会出现数据转换及乱码情况。
二、字符类型、字符集、国家字符集、字符编码区别
1、字符类型
如:char varchar varchar2 number clob等等;
2、字符集
(1)用来存储CHAR, VARCHAR2, CLOB, LONG等类型数据
(2) 用来标示诸如表名、列名以及PL/SQL变量等
(3) 用来存储SQL和PL/SQL程序单元等
3、国家字符集
(1) 用以存储NCHAR, NVARCHAR2, NCLOB等类型数据
(2) 国家字符集实质上是为oracle选择的附加字符集,主要作用是为了增强oracle的字符处理能力,因为NCHAR数据类型可以提供对亚洲使用定长多字节编码的支持,而数据库字符集则不能。国家字符集在oracle9i中进行了重新定义,只能在unicode编码中的AF16UTF16和UTF8中选择,默认值是 AF16UTF16
4、字符编码
三、联想以上所有字符类型,字符集等构成了整个数据库的基础骨架,存储数据、高效检索、数据计算等功能构成了数据库的日常运用。数据库维护涉及到其数据库正常,高效运行,此刻涉及优化等等。(此处描述比较简略,后期会逐渐详细描述)
总结:字符及编码是数据库的基础,也是数据库设计的要点,此处应该慎重。
Yicheng16
22.08.17
-- The End --
版权声明
本文仅代表作者观点,不代表博信信息网立场。