sql - 如何在 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。
解决方案
使用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/ 。
推荐阅读
- reactjs - React hooks - 不要第一次渲染
- c# - 将字节数组复制到通用类型而不装箱
- javascript - 有什么方法可以通过 java 本机模块(反应本机桥)访问领域实例(由 javascript 代码创建)?
- python-3.x - Python 3 Pandas 如何在两个“_”之间提取字符串,并在 DF 中进行错误处理?
- javascript - Magnific Popup - SoundCloud iframe 调整大小
- azure-pipelines - 在 Azure Pipelines yaml 文件中使用带有模板的嵌套参数
- python - 透明的“覆盖”matplotlib stackplot
- java - 如何将“JOptionPane.showConfirmDialog”弹出窗口的默认焦点从“确定”按钮更改为“文本字段”?
- c# - ASP.Net Core PWA 缓存查询
- python - 在 Django 中创建随机 URL