日期:2014-05-17  浏览次数:20864 次

外部表的乱码
各位大哥,小弟的ORACLE 11G已经设置好可以正常显示中文字符的字符集环境,也就是可以直接在普通表中直接插入中文字。但今天小弟做了一个外部表练习。
其中数据源如下(datasource.txt):
1,中国
2,美国
3,日本
而创建外部表的代码如下:
create table mytab (id integer,country varchar2(15))
organization external(
type oracle_loader
default directory dat_dir
access parameter (
records delimited by newline
badfile bad_dir:'expt%a_%p.bad'
logfile bad_dir:'expt%a_%p.log'
fields terminated by ','
missing field values are null (id,country))
location('datasource.txt'))
parallel
reject limit unlimited
系统提示,外部表创建成功,于是小弟便执行查询:select * from mytab;
但系统显示中文字部分出现乱码。请问各位大哥,小弟应该怎样处理啊?
------解决方案--------------------
但系统显示中文字部分出现乱码。请问各位大哥,小弟应该怎样处理啊?

哪部分文字?你的txt里是否有特殊字符》?
------解决方案--------------------
create table mytab (id integer,country varchar2(15))


试试这个:

create table mytab (id integer,country varchar2(4))

------解决方案--------------------
oracle的字符串是lpad的。所以,你的字符串长度是15,恰好是7.5个汉字。。。
------解决方案--------------------
看下你外部表的characterset参数,通常外部表中文乱码和外部表的characterset参数有关,检查下你数据库的字符集还有创建外部表的文件的编码,如果你是在linux上做的实验,可能外部表的characterset参数需要设置成UTF8/AL32UTF8,如果是在windows上做的实验,外部表的characterset参数可能需要设置成ZHS16GBK,希望可以帮到您。