gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:10:07 25 4
gpt4 key购买 nike

假设你有一张 table :

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 不可用,那么您可以用使用 UTL_FILE 的过程替换 DBMS_XSLPROCESSOR.clob2file。

例如 :
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。

关于oracle - 将 CLOB 字段转储到文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7311084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com