加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – 将CLOB字段转储到文件中?

发布时间:2020-12-12 13:13:10 所属栏目:百科 来源:网络整理
导读:说你有桌子: Column_name | data_typeTitle | Varchar2Text | CLOB 有些行: SomeUnkownMovie | A long time ago in a galaxy far,far away....(long text ahead)FredMercuryBio | Awesomeness and stuff....(more long text) 有没有办法可以查询,所以输出
说你有桌子:

Column_name | data_type
Title       | Varchar2
Text        | CLOB

有些行:

SomeUnkownMovie | A long time ago in a galaxy far,far away....(long text ahead)
FredMercuryBio  | Awesomeness and stuff....(more long text)

有没有办法可以查询,所以输出文件就像

SomeUnkownMovie.txt
FredMercuryBio.txt

(和ofc,里面有各自的文字)

我认为这应该是一个简单的sqlplus脚本..虽然我只是不是那个:(

谢谢!

解决方法

这个pl / sql代码应该在oracle 11g中运行.
它将clobs的文本转储到 directory,标题为文件名.

begin 
  for rec in (select title,text from mytable)
  loop DBMS_XSLPROCESSOR.clob2file(rec.text,'DUMP_SOURCES',rec.title ||'.txt'); end loop;
end;

如果DBMS_XSLPROCESSOR不可用,那么您可以将DBMS_XSLPROCESSOR.clob2file替换为使用UTL_FILE的过程.
例如 :

CREATE OR REPLACE PROCEDURE CLOB2FILE (
    clob_in IN CLOB,directory_name IN VARCHAR2,file_name IN VARCHAR2
)
IS
    file_handle UTL_FILE.FILE_TYPE;
    clob_part VARCHAR2(1024);
    clob_length NUMBER;
    offset NUMBER := 1;
BEGIN
    clob_length := LENGTH(clob_in);
    file_handle := UTL_FILE.FOPEN(directory_name,file_name,'W');

    LOOP
        EXIT WHEN offset >= clob_length;
        clob_part := DBMS_LOB.SUBSTR (clob_in,1024,offset);
        UTL_FILE.PUT(file_handle,clob_part);
        offset := offset + 1024;
    END LOOP;

    UTL_FILE.FFLUSH(file_handle);
    UTL_FILE.FCLOSE(file_handle);

EXCEPTION
    WHEN OTHERS THEN
        UTL_FILE.FCLOSE(file_handle);
        RAISE;

END;

或者用dbms_advisor.create_file替换DBMS_XSLPROCESSOR.clob2file.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读