首页 > 解决方案 > 如何在 Oracle 中读取很长的 BLOB 列?

问题描述

我想将 Node Express API 与具有 BLOB 列的表的 Oracle 11g 数据库连接起来。我想使用 SQL 查询来阅读它,但问题是 BLOB 列可以有很长的文本,超过 100k 个字符。我怎样才能做到这一点?

我尝试使用:select utl_raw.cast_to_varchar2(dbms_lob.substr(COLUMN_NAME)) from TABLE_NAME。但它返回“原始变量长度太长”。

我可以在一个循环中进行多个查询,然后在必要时加入它们,但我还没有找到如何只带一部分 blob。

标签: sqloracleexpressoracle11gblob

解决方案


使用node-oracledb 模块访问 Oracle 数据库(您可能已经在这样做,但不要提及)。

默认情况下,node-oracledb 会将 LOB 作为您可以从中流式传输的 Lob 实例返回。或者,您可以直接以字符串或缓冲区的形式获取数据,这对于“小型”LOB 很有用。对于 100K,我只需将数据作为缓冲区获取,您可以通过设置:

oracledb.fetchAsBuffer = [ oracledb.BLOB ];

查看使用 CLOB、NCLOB 和 BLOB 数据文档,以及诸如blobhttp.js之类的示例以及示例目录中的其他lob*.js文件。

您可能还想查看显示 Express 和 node-oracledb 的 https://jsao.io/2018/03/creating-a-rest-api-with-node-js-and-oracle-database/


推荐阅读