1,查Oracle数据库创建时候的字符集:Oracle服务器端执行SQLgt; select name, value$ from sys.props$ where name like
1,查Oracle数据库创建时候的字符集:
Oracle服务器端执行
SQL> select name, value$ from sys.props$ where name like 'NLS%';
NAME VALUE$
------------------------------ ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET UTF8
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NAME VALUE$
------------------------------ ----------------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.4.0
20 rows selected.
确认数据库创建的时候选择的字符集是 UTF-8
.执行sql :select userenv('language') from dual; 获取oracle服务端字符集X
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8
2. 检查执行 sqlldr 的客户端的 NLS_LANG 的设置
Oracle 客户端执行
[oracle@localhost hx]$ echo $NLS_LANG
AMERICAN_AMERICA.UTF8
3. 尽量让以上3个步骤检查出的字符集设置都一致,开始通过 sqlldr 导入文本,并检查结果。
通常出现问题的原因,可分为三种:
1. 服务器指定字符集与客户字符集不同,,而与加载数据字符集一致。
解决方法:对于这种情况,只需要设置客户端字符集与服务器端字符集一致就可以了
oracle10g UTF8编码:AMERICAN_AMERICA.AL32UTF8
GBK编码:SIMPLIFIED CHINESE_CHINA.ZHS16GBK
客户端修改为中文是:在linux的终端上设置环境变量