【问题标题】:How can I read a very long BLOB column in Oracle?如何在 Oracle 中读取很长的 BLOB 列?
【发布时间】:2020-08-20 02:03:14
【问题描述】:

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

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

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

【问题讨论】:

  • Oracle 内置了流式传输操作。

标签: sql oracle express oracle11g blob


【解决方案1】:

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

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

oracledb.fetchAsBuffer = [ oracledb.BLOB ];

查看Working with CLOB, NCLOB and BLOB Data 文档以及blobhttp.js 等示例以及examples directory 中的其他lob*.js 文件。

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

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 2021-01-21
    • 2016-07-24
    • 2011-08-06
    • 2016-11-16
    • 2013-10-25
    • 2020-04-23
    • 2017-06-14
    • 2012-01-16
    相关资源
    最近更新 更多