现状:我用 imp/exp 导入/导出 数据时发现导入的数据注释全部都是乱码.
环境:exp、imp客户端没设置NLS_LANG环境(或者客户端为其他字符集),而数据库的环境为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
原因:客户端与服务端字符集不一样,导致在客户端导入数据时,导入的字符时按照客户端来生成,从而引起显示的字符集不一样
解决办法:
1、查询服务端字符集
1>select userenv('language') from dual;
或者(以1为主)
2>在命令行下:show parameter NLS
2、在.bash_profile文件添加如下内容(从服务端查询到的字符集):
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"(为主)
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
注:三个字符集随便选择一个
3、重新导入dmp文件,字符集正常
4、可以通过以下SQL进行查询字符集是否正常
select 'comment on column '||table_name||'.'||column_name||' is '''||comments||''';'
from dba_col_comments t where t.owner = 'WEBP2PUSER';