ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DBMS_LOB包LOADFROMFILE过程加载CLOB乱码

DBMS_LOB包LOADFROMFILE过程加载CLOB乱码

原创 Linux操作系统 作者:yangtingkun 时间:2010-01-12 23:58:49 0 删除 编辑

在TOM的例子里面看到使用LOADFROMFILE加载CLOB,但是使用的过程中出现了乱码。

 

 

在10.2和11.2的版本中都出现相同的问题:

SQL> host echo 'test' > abc.txt

SQL> DECLARE
  2     V_LOB CLOB;
  3     V_FILE BFILE := BFILENAME('D_OUTPUT', 'abc.txt');
  4  BEGIN
  5     UPDATE T SET CONTENTS = EMPTY_CLOB RETURN CONTENTS INTO V_LOB;
  6     DBMS_LOB.FILEOPEN(V_FILE);
  7     DBMS_LOB.LOADFROMFILE(V_LOB, V_FILE, DBMS_LOB.LOBMAXSIZE);
  8     DBMS_LOB.FILECLOSEALL;
  9     COMMIT;
 10  END;
 11  /

PL/SQL 过程已成功完成。

SQL> select * from t;

        ID NAME       CONTENTS
---------- ---------- -----------------------------------------------
         1 ABC       
瑥獴

尝试通过iconv改变文件的格式,结果依旧。

从windows上里面notepad写入“test”字符后,分别保存为unicode和utf-8编码文件,然后以文本方式ftp到当前服务器,利用LOADFROMFILE加载后,也是乱码:

SQL> DECLARE
  2     V_LOB CLOB;
  3     V_FILE BFILE := BFILENAME('D_OUTPUT', 'uni.txt');
  4  BEGIN
  5     UPDATE T SET CONTENTS = EMPTY_CLOB RETURN CONTENTS INTO V_LOB;
  6     DBMS_LOB.FILEOPEN(V_FILE);
  7     DBMS_LOB.LOADFROMFILE(V_LOB, V_FILE, DBMS_LOB.LOBMAXSIZE);
  8     DBMS_LOB.FILECLOSEALL;
  9     COMMIT;
 10  END;
 11  /

PL/SQL 过程已成功完成。

SQL> SELECT * FROM T;

        ID NAME       CONTENTS
---------- ---------- ---------------------------------------------
         1 ABC       
?琀攀猀琀

SQL> DECLARE
  2     V_LOB CLOB;
  3     V_FILE BFILE := BFILENAME('D_OUTPUT', 'utf.txt');
  4  BEGIN
  5     UPDATE T SET CONTENTS = EMPTY_CLOB RETURN CONTENTS INTO V_LOB;
  6     DBMS_LOB.FILEOPEN(V_FILE);
  7     DBMS_LOB.LOADFROMFILE(V_LOB, V_FILE, DBMS_LOB.LOBMAXSIZE);
  8     DBMS_LOB.FILECLOSEALL;
  9     COMMIT;
 10  END;
 11  /

PL/SQL 过程已成功完成。

SQL> SELECT * FROM T;

        ID NAME       CONTENTS
---------- ---------- --------------------------------------------
         1 ABC       
??敳

查询了METALINK,发现果然是Oracle的bug,参考文档ID 562717.1。Oracle推荐在9.2如果加载CLOB,使用LOADCLOBFROMFILE来代替。

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-624979/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11076943