分块读取Blob字段数据(Oracle)
试过了MSSQL的分块读取Blob字段,又尝试在Oracle下完成,发现还是可行的。
首先建立一个存储过程:
create or replace procedure PRO_GET_BLOB(
I_PKGID IN INTEGER, --文件ID
I_MOUNT IN INTEGER, --复制数据数量(Byte)
I_OFFSET IN INTEGER, --起始位置
B_RESULT IN OUT BLOB) --返还结果
is
B_TEMP BLOB;
begin
--将BLOB数据读取到变量,其实是传递了一个指针
SELECT FILE_DATA INTO B_TEMP
FROM T_SYS_PKG_FILE
WHERE PKG_ID = I_PKGID;
--从BLOB中读取所需要的数据,并返还给参数
DBMS_LOB.Copy(B_RESULT,B_TEMP, I_MOUNT,1, I_OFFSET);
end PRO_GET_BLOB;
其核心就是利用DBMS_LOB函数进行处理,在将数据库Blob字段读取到Blob变量时,应该是传递的数据指针,而不是具体的数据,用一个47M的文件进行反复读写过程,也没有发现Oracle内存发生多大变化。这样一来无论是内存还是CPU占用都非常小。如下图:
在客户端执行存储过程,读取返回参数的值,实现对Blob字段的分块获取。
分块读取Blob字段数据(Oracle)的更多相关文章
- 分块读取Blob字段数据(MSSQL)
MSSQL中提供了一个功能,能够分块读取Blob字段中的数据,写了一个存储过程代码如下: CREATE PROCEDURE PRO_GET_FILE_DATA @PKG_ID INT, ...
- C# 连接 Oracle,读取Blob字段数据,存到文件中去,包括pdf等等
代码如下,记得引入Oracle的dll using System; using System.Collections.Generic; using System.ComponentModel; usi ...
- Java读取oracle数据库中blob字段数据文件保存到本地文件(转载)
转自:https://www.cnblogs.com/forever2698/p/4747349.html package com.bo.test; import java.io.FileOutput ...
- FIREDAC保存ORACLE的BLOB字段数据
FIREDAC默认识别ORACLE的BLOB字段为HUGEBLOB,需要将HBLOB映射为BLOB,才可以保存ORACLE的BLOB字段的数据.
- 插入与读取Blob类型数据
BlobTest package com.aff.PreparedStatement; import java.io.File; import java.io.FileInputStream; imp ...
- Oracle数据库BLOB字段的存取
述] Oracle的Blob字段比较特殊,他比long字段的性能要好很多,可以用来保存例如图片之类的二进制数据. 写入Blob字段和写入其它类型字段的方式非常不同,因为Blob自身有一个cur ...
- C#读取Mysql blob字段 (转帖)
http://blog.csdn.net/config_man/article/details/6123191 开发环境:Windows XP Professional SP3.VS2008.Winf ...
- Java实现打包下载BLOB字段中的文件
概述 web项目的文件打包下载实现:servlet接收请求,spring工具类访问数据库及简化大字段内容获取,org.apache.tools.zip打包. 必要提醒:当前总结是继Java实现下载BL ...
- Java读取lob格式数据
想要读出lob里面的图片数据,就要确认clob里面存储的是什么,一般情况下存储的base64的串串.所以就以base64为例,而Blob里面存储的大部分是图片数据,但也有xml内容数据. 1查询lob ...
随机推荐
- Oracle查询表占用空间的大小
select * from (select OWNER, segment_name, segment_type, sum(bytes) mmm from dba_segments where /*ta ...
- python deque
Deque objects support the following methods: append(x)¶ Add x to the right side of the deque. append ...
- Discuz-阅读权限
设置用户浏览帖子或附件的权限级别,范围 0-255,0 为禁止用户浏览任何帖子或附件. 当用户的阅读权限小于帖子或附件的阅读权限许可(默认时为 1)时, 用户将不能阅读该帖子或下载该附件
- Discuz! 安装模板、插件提示“对不起,您安装的不是正版应用...
iscuz 社区在更新到2.0以上后,增加了对插件的版本检测,在安装时,可能会出现:“对不起,您安装的不是正版应用,安装程序无法继续执行”的提示,要解决这个其实挺容易的,找到以下文件: /source ...
- Rpgmakermv(30) GameQuest任务插件
插件简介: 很牛X的任务插件(个人目前用过中的) 插件用法说明 Report any bugs, editor or plugin related here: http://forums.rpgmak ...
- 7.线程id,优先级讲解
1.线程id可以通过Thread对象的getId()方法得到,在线程出了问题,为什么CPU占用这么高的时候,查的时候我们可以在堆栈信息中找到对应线程,然后干掉该线程就好! 2.而线程对象的getNam ...
- uva 1632 Alibaba
题意: 一个人要从如果干个地方拿货,每个地方的货物是有存在时间的,到了某个时间之后就会消失. 按照位置从左到右给出货物的位置以及生存时间,这个人选择一个最优的位置出发,问拿完货物的最少时间. 思路: ...
- QScrollBar & QSlider & QDial
[1]滚动条 & 滑块 & 表盘 Qt示例工程: (1)slidergroup.h #include <QGroupBox> QT_BEGIN_NAMESPACE clas ...
- 变量为空代表false
name = ''#名字为空即代表False while not name:#not name=False即 真,将执行循环体 print('Enter your name:') name = inp ...
- django中orm使用的注意事项
必备小知识点 <1> all(): 查询所有结果 <2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者 ...