gpt4 book ai didi

Oracle BLOB 到 base64 CLOB

转载 作者:行者123 更新时间:2023-12-04 09:30:48 24 4
gpt4 key购买 nike

我可以一次性将 Oracle BLOB 转换为 Base64 CLOB 吗?

像:

CREATE TABLE test
(
image BLOB,
imageBase64 CLOB
);

INSERT INTO test(image)
VALUES (LOAD_FILE('/full/path/to/new/image.jpg'));

UPDATE test SET imageBase64 = UTL_ENCODE.base64_encode(image);

commit;

我知道我可以添加函数/存储过程来完成这项工作。性能方面非常重要,所以我想问是否有办法通过直接将数据推送到 CLOB 来克服 32K 的限制。

最佳答案

这个函数得到from here应该做的工作。

CREATE OR REPLACE FUNCTION base64encode(p_blob IN BLOB)
RETURN CLOB
-- -----------------------------------------------------------------------------------
-- File Name : http://oracle-base.com/dba/miscellaneous/base64encode.sql
-- Author : Tim Hall
-- Description : Encodes a BLOB into a Base64 CLOB.
-- Last Modified: 09/11/2011
-- -----------------------------------------------------------------------------------
IS
l_clob CLOB;
l_step PLS_INTEGER := 12000; -- make sure you set a multiple of 3 not higher than 24573
BEGIN
FOR i IN 0 .. TRUNC((DBMS_LOB.getlength(p_blob) - 1 )/l_step) LOOP
l_clob := l_clob || UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(DBMS_LOB.substr(p_blob, l_step, i * l_step + 1)));
END LOOP;
RETURN l_clob;
END;
/

然后更新看起来像
UPDATE test SET imageBase64 = base64encode(image);

请注意,也许应该使用函数 DBMS_LOB.APPEND 而不是该连接运算符来优化该函数。如果您有性能问题,请尝试这样做。

关于Oracle BLOB 到 base64 CLOB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29155620/

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