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