将文本文件作为 clob 加载到数据库

2023-11-25

将文本文件作为 clob 加载到数据库时出现问题。

  • Oracle 版本:Oracle Database 11g EE 版本 11.2.0.2.0
  • NLS_LANG:RUSSIAN_RUSSIA.CL8MSWIN1251
  • NLS_CHARACTERSET:AL32UTF8

加载文本文件的代码:

DECLARE
L_BFILE BFILE;
L_CLOB  CLOB;
file_name VARCHAR2(300);

BEGIN
   file_name := 'test.txt';
   L_BFILE := BFILENAME('DIR', file_name);
   if (dbms_lob.fileexists(l_bfile) = 1) then
      INSERT INTO TEST T
      VALUES (SEQ_TEST.NEXTVAL, EMPTY_CLOB(),file_name) return r_data into l_clob;
      L_BFILE := BFILENAME('DIR', file_name);
      DBMS_LOB.FILEOPEN(L_BFILE, DBMS_LOB.FILE_READONLY);
      DBMS_LOB.LOADFROMFILE(L_CLOB, L_BFILE, DBMS_LOB.GETLENGTH(L_BFILE));
      DBMS_LOB.FILECLOSE(L_BFILE);
      COMMIT;
   end if;   
END;

文本文件为UTF8。加载到数据库后,我运行选择并获取方块而不是俄语字符。请帮忙!


Try 从文件加载CLOB代替从文件加载.

从手册中:

注意:如果字符集是变化宽度的,例如 UTF-8, LOB 值以固定宽度 UCS2 格式存储。因此,如果您 使用DBMS_LOB.LOADFROMFILE,BFILE中的数据应该在 UCS2 字符集而不是 UTF-8 字符集。然而, 您应该使用 sql*loader 而不是 LOADFROMFILE 将数据加载到 CLOB 或 NCLOB 因为 sql*loader 提供了必要的字符集 转换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将文本文件作为 clob 加载到数据库 的相关文章

随机推荐