各位大哥,小弟的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;
但系统显示中文字部分出现乱码。请问各位大哥,小弟应该怎样处理啊?

解决方案 »

  1.   

    但系统显示中文字部分出现乱码。请问各位大哥,小弟应该怎样处理啊?哪部分文字?你的txt里是否有特殊字符》?
      

  2.   

    create table mytab (id integer,country varchar2(15))
    试试这个:create table mytab (id integer,country varchar2(4))
      

  3.   

    oracle的字符串是lpad的。所以,你的字符串长度是15,恰好是7.5个汉字
      

  4.   

    看下你外部表的characterset参数,通常外部表中文乱码和外部表的characterset参数有关,检查下你数据库的字符集还有创建外部表的文件的编码,如果你是在linux上做的实验,可能外部表的characterset参数需要设置成UTF8/AL32UTF8,如果是在windows上做的实验,外部表的characterset参数可能需要设置成ZHS16GBK,希望可以帮到您。