在 Oracle 中,如何将大型 blob 作为文本文档读取



我有一个BLOB,它实际上包含从几百个字符到20K +字符的文本。 我得到了这个(我知道它应该是一个CLOB,但不是我的选择)。我需要能够获取整个文本文档。 我最接近的是:

select utl_raw.cast_to_varchar2(dbms_lob.substr(blob_data,2000,1)) from my_table where id = 'id_value'; --get up to 2000

我不能一次超过 2000,尽管我想我可以得到大小(使用 dbms_lob.getlength)并一次得到 2000 并把它放在一起。 似乎应该有更好的答案。 有没有人有更好的方法?

我在这里找到了有效的方法:通过 Groovy 获取 Blob 信息

这是我的Groovy代码:

String sqlQuery = "select EVENT_MSG_DATA as blob from AUDIT_EVENT where AUDIT_EVENT_ID = '" + auditEventId + "'";
def blob = sql.firstRow(sqlQuery).blob;
String messageContents = new String(blob.getBytes(1,(int)blob.length()));
return messageContents;

比其他可能性容易得多。 不知道为什么很难找到这个解决方案。 希望它能帮助别人。

首先,您需要删除到 VARCHAR2 的转换,这会导致问题(PL/SQL 和 SQL 中具有不同最大大小的数据类型)。

然后

从 SQL*Plus 中,定义列以显示足够的字符(列...格式a n),可能设置长大小(列格式,在字符部分),然后在大小 n 上设置服务器输出

来自PL/SQL,DBMS_OUTPUT。启用(n

从 OCI 中,您需要分配一个定位器然后绑定其地址,它不应该有大小限制

所有 3 个 N 在 2000 和 1000000 之间。

最新更新