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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |