当前位置:数据库 > Oracle >>

Oracle导出/导入与字符集信息查看

Oracle导出/导入与字符集信息查看
 
进行数据的导入导出时,我们要注意关于字符集的问题。在EXP/IMP过程中我们需要注意四个字符集的参数:导出端的客户端字符集,导出端数据库字符集,导入端的客户端字符集,导入端数据库字符集。
 
我们首先需要查看这四个字符集参数。 
查看数据库的字符集的信息: 
SQL> select * from nls_database_parameters; 
 
PARAMETER                     VALUE 
------------------------------ -------------------------------------------------------------------------------- 
NLS_LANGUAGE                  AMERICAN 
NLS_TERRITORY                   AMERICA 
NLS_CURRENCY                  $ 
NLS_ISO_CURRENCY              AMERICA 
NLS_NUMERIC_CHARACTERS        ., 
NLS_CHARACTERSET              ZHS16GBK 
NLS_CALENDAR                  GREGORIAN 
NLS_DATE_FORMAT               DD-MON-RR 
NLS_DATE_LANGUAGE             AMERICAN 
NLS_SORT                        BINARY 
NLS_TIME_FORMAT               HH.MI.SSXFF AM 
NLS_TIMESTAMP_FORMAT          DD-MON-RR HH.MI.SSXFF AM 
NLS_TIME_TZ_FORMAT            HH.MI.SSXFF AM TZH:TZM 
NLS_TIMESTAMP_TZ_FORMAT       DD-MON-RR HH.MI.SSXFF AM TZH:TZM 
NLS_DUAL_CURRENCY             $ 
NLS_COMP                      BINARY 
NLS_NCHAR_CHARACTERSET        ZHS16GBK 
NLS_RDBMS_VERSION             8.1.7.4.1 
 
NLS_CHARACTERSET:ZHS16GBK是当前数据库的字符集。 
 
我们再来查看客户端的字符集信息: 
客户端字符集的参数NLS_LANG=_<territory >. 
language:指定oracle消息使用的语言,日期中日和月的显示。 
Territory:指定货币和数字的格式,地区和计算星期及日期的习惯。 
Characterset:控制客户端应用程序使用的字符集。通常设置或等于客户端的代码页。 
           或者对于unicode应用设为UTF8。 
在windows中,查询和修改NLS_LANG可在注册表中进行: 
HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOMExx\ 
xx指存在多个Oracle_HOME时的系统编号。 
在unix中: 
$ env|grep NLS_LANG 
NLS_LANG=simplified chinese_china.ZHS16GBK 
修改可用: 
$ export NLS_LANG=AMERICAN_AMERICA.UTF8 
通常在导出时最好把客户端字符集设置得和数据库端相同。当进行数据导入时,主要有以下两种情况: 
(1)   源数据库和目标数据库具有相同的字符集设置。 
这时,只需设置导出和导入端的客户端NLS_LANG等于数据库字符集即可。 
(2)   源数据库和目标数据库字符集不同。 
先将导出端客户端的NLS_LANG设置成和导出端的数据库字符集一致,导出数据,然后将导入端客户端的NLS_LANG设置成和导出端一致,导入数据,这样转换只发生在数据库端,而且只发生一次。 
这种情况下,只有当导入端数据库字符集为导出端数据库字符集的严格超集时,数据才能完全导成功,否则,可能会有数据不一致或乱码出现。
 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,