- 浏览: 60917 次
- 性别:
- 来自: 深圳
文章分类
最新评论
置为空或NULL
update blob_test set b_content = null;
update blob_test set b_content = EMPTY_BLOB();
判断内容不为空
select * from blob_test where dbms_lob.getlength(b_content) > 0;
select * from blob_test where dbms_lob.getchunksize(b_content) > 0;
判断为null
select * from blob_test where b_content is null;
判断为空
select * from blob_test where dbms_lob.getlength(b_content) = 0;
根据目前项目的特点,有一个第三方厂家写入的一个表,记录图片信息,原来使用线程导出后,清空blob字段,现在完全改写为数据库自身实现。这样更高效
例子:之后再用job调用存储过程
CREATE OR REPLACE PROCEDURE GET_PIC_BLOB(pk_id number) IS
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
in_front_blob BLOB;
in_back_blob BLOB;
out_front_blob BLOB;
out_back_blob BLOB;
l_blob_len INTEGER;
BEGIN
select t.in_front_pic, t.in_back_pic into in_front_blob,in_back_blob
from car_pic t
where (dbms_lob.getlength(in_front_pic) > 0 and
dbms_lob.getlength(in_back_pic) > 0) and
id = pk_id;
begin
l_blob_len := DBMS_LOB.GETLENGTH(in_front_blob);
l_file := UTL_FILE.FOPEN('TEST1',
pk_id || '_in_front' || '.jpg',
'WB',
32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ(in_front_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
l_pos :=1;
EXCEPTION
--WHEN NO_DATA_FOUND THEN
--DBMS_OUTPUT.put_line('no data : ' || i_xh);
WHEN OTHERS THEN
IF UTL_FILE.IS_OPEN(l_file) THEN
UTL_FILE.FCLOSE(l_file);
RAISE;
END IF;
end;
begin
l_blob_len := DBMS_LOB.GETLENGTH(in_back_blob);
l_file := UTL_FILE.FOPEN('TEST1',
pk_id || '_in_back' || '.jpg',
'WB',
32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ(in_back_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
l_pos := 1;
EXCEPTION
--WHEN NO_DATA_FOUND THEN
--DBMS_OUTPUT.put_line('no data : ' || i_xh);
WHEN OTHERS THEN
IF UTL_FILE.IS_OPEN(l_file) THEN
UTL_FILE.FCLOSE(l_file);
RAISE;
END IF;
end;
END GET_PIC_BLOB;
update blob_test set b_content = null;
update blob_test set b_content = EMPTY_BLOB();
判断内容不为空
select * from blob_test where dbms_lob.getlength(b_content) > 0;
select * from blob_test where dbms_lob.getchunksize(b_content) > 0;
判断为null
select * from blob_test where b_content is null;
判断为空
select * from blob_test where dbms_lob.getlength(b_content) = 0;
根据目前项目的特点,有一个第三方厂家写入的一个表,记录图片信息,原来使用线程导出后,清空blob字段,现在完全改写为数据库自身实现。这样更高效
例子:之后再用job调用存储过程
CREATE OR REPLACE PROCEDURE GET_PIC_BLOB(pk_id number) IS
l_file UTL_FILE.FILE_TYPE;
l_buffer RAW(32767);
l_amount BINARY_INTEGER := 32767;
l_pos INTEGER := 1;
in_front_blob BLOB;
in_back_blob BLOB;
out_front_blob BLOB;
out_back_blob BLOB;
l_blob_len INTEGER;
BEGIN
select t.in_front_pic, t.in_back_pic into in_front_blob,in_back_blob
from car_pic t
where (dbms_lob.getlength(in_front_pic) > 0 and
dbms_lob.getlength(in_back_pic) > 0) and
id = pk_id;
begin
l_blob_len := DBMS_LOB.GETLENGTH(in_front_blob);
l_file := UTL_FILE.FOPEN('TEST1',
pk_id || '_in_front' || '.jpg',
'WB',
32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ(in_front_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
l_pos :=1;
EXCEPTION
--WHEN NO_DATA_FOUND THEN
--DBMS_OUTPUT.put_line('no data : ' || i_xh);
WHEN OTHERS THEN
IF UTL_FILE.IS_OPEN(l_file) THEN
UTL_FILE.FCLOSE(l_file);
RAISE;
END IF;
end;
begin
l_blob_len := DBMS_LOB.GETLENGTH(in_back_blob);
l_file := UTL_FILE.FOPEN('TEST1',
pk_id || '_in_back' || '.jpg',
'WB',
32767);
WHILE l_pos < l_blob_len LOOP
DBMS_LOB.READ(in_back_blob, l_amount, l_pos, l_buffer);
UTL_FILE.PUT_RAW(l_file, l_buffer, TRUE);
l_pos := l_pos + l_amount;
END LOOP;
UTL_FILE.FCLOSE(l_file);
l_pos := 1;
EXCEPTION
--WHEN NO_DATA_FOUND THEN
--DBMS_OUTPUT.put_line('no data : ' || i_xh);
WHEN OTHERS THEN
IF UTL_FILE.IS_OPEN(l_file) THEN
UTL_FILE.FCLOSE(l_file);
RAISE;
END IF;
end;
END GET_PIC_BLOB;
发表评论
-
oracle11g提示服务不可用
2014-09-26 17:36 570今天遇到一个问题,本地1521端口启用,但远程不能访问 修改监 ... -
手工用户创建,老是记不住,记录
2014-09-18 13:53 317Oracle创建表空间、创建用户以及授权、查看权限 创建临 ... -
gdul
2014-08-15 15:16 469一直想自己也写个dul工具,无奈理解得不够深入 几天前看到别人 ... -
SQL调优
2014-06-20 14:14 379网上看到如下sql: 留一个线索在此 select /*+ ... -
表闪回
2014-06-19 16:13 330使用delete删除数据的情况,如果是truncate只能用数 ... -
外键约束
2014-06-19 16:02 389删除一个表时,提示有外键约束,ORA-02292: 违反完整约 ... -
get_ddl使用
2014-05-19 16:45 422查看oracle中表定义等,需要使用dbms_metadata ... -
PL/SQL语法
2014-05-09 11:38 375今天写plsql,很久没写了,很简单的,也不想参看以前写的,怎 ... -
归档日志满的处理
2014-05-04 10:07 750只是一个记录贴,方便查阅。完全没有新意 归档日志一般需要保留 ... -
数据的导出导入
2013-12-30 12:41 353异构数据库之间数据交换,主要使用txt文本文件 以下记录一个工 ... -
exp增量
2013-12-17 17:09 343很久没有写文章了,今天遇到一个老问题,exp增量备份 记 ... -
查找oracle的操作日志
2013-12-17 16:48 551今天程序有些功能不能用了,查了一下,发现某些表对象删除了 ... -
数结构的查询
2013-09-27 18:33 0很早之前就使用过该功能,每次都记不住,每次都要搜索 索性记录一 ... -
面试中的SQL
2013-09-27 12:07 451虽然有些时间没有面试过了 在我的印象中,sql中行列转换的问题 ... -
oracle SQL特性使用
2013-09-27 11:25 378oracle分析函数 统计记录中类似1/222这样的记录 se ... -
oracle内部原理
2013-09-26 11:17 951总是以为对oracle很了解,已经使用了好多年,基本是增、删、 ... -
oracle跟踪程序执行的SQL
2013-09-24 15:34 1104专门记录一下,对于系统调优很重要 1.oracle的10046 ... -
ORA-01555处理
2013-09-22 16:44 589有时表太大,导出时出现1555错误,可以采用分段方式处理。 以 ... -
统计表的大小
2013-09-11 17:29 360统计用户表的大小: SELECT * FROM ( SEL ... -
UTL_FILE写文件
2013-09-09 16:16 661oracle内部提供的很多使用的包,为应用提供了可能! 在我们 ...
相关推荐
以上就是Java中Blob字段操作的基本流程,通过这些步骤,你可以成功地将图片或文件保存到数据库中,并能从数据库中读取和恢复这些数据。在实际开发中,根据具体需求,可能还需要处理异常、事务管理和资源关闭等问题,...
Blob字段操作是数据库编程中的一个重要环节,尤其是在处理大量非结构化数据时。本教程将围绕Java如何与Blob字段进行交互展开,包括插入、查询、更新和删除Blob数据。 首先,理解Blob数据类型。Blob是Java.sql包中的...
本文将深入探讨如何判断一个BLOB字段是否为空,这是一个在数据库操作中极为实用且关键的技术点。 ### BLOB字段简介 BLOB类型用于存储大量的二进制数据。不同于传统的字符型数据,BLOB可以存储诸如图片、音频文件或...
Python如何操作Oracle的Blob字段,
oracle中对blob字段的处理方法,包括增加,删除,修改,更新等操作。
Java对Oracle数据库中BLOB字段的处理涉及多个层面,包括读取、写入、更新以及跨数据库操作等。 ### Java处理Oracle BLOB字段的基本方法 #### 1. 读取BLOB字段 在Java中,读取Oracle数据库中的BLOB字段通常通过`...
写入Blob字段时,先创建`OracleParameter`对象,将其Direction设置为` ParameterDirection.Input `,OracleDbType设置为`OracleDbType.Blob`,然后赋值。以下是一个示例: ```csharp // 读取Blob字段 using ...
本文将详细介绍如何在Oracle数据库中实现Blob字段的上传和下载操作。 #### 二、Blob字段上传 Blob字段的上传通常涉及到以下几个步骤: 1. **创建Blob字段:** 首先需要在数据库表中定义一个Blob类型的字段。 2. **...
BLOB字段在数据库中以字节流的形式存在,可以进行读写操作。 要实现批量导出BLOB字段生成图片,通常需要以下步骤: 1. **安装Oracle Client**:Oracle Client是与Oracle服务器通信的客户端工具,它提供了与数据库...
### Oracle中BLOB字段的读取与操作 #### 一、引言 在数据库系统中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的数据类型,例如图像、音频或视频文件等。在Oracle数据库中,BLOB类型特别适用于处理...
本篇文章将深入探讨如何在Delphi中对Oracle数据库的BLOB字段进行读写操作。 首先,你需要在Delphi项目中引入Oracle数据库访问的相关组件,如DBExpress或ADO。DBExpress是Delphi内置的一个轻量级数据库访问框架,而...
本篇文章将详细介绍如何通过SQL查询语句获取存储在Blob字段中的JPEG格式照片的像素大小。 ### 1. 了解Blob数据类型 在Oracle数据库中,Blob(Binary Large Object)类型用于存储大容量的二进制数据,比如图像、音频...
压缩包中的"实例123-存取Blob字段"可能包含了上述所有过程的详细实现,包括数据库连接、查询构造、Blob数据的读写等,对于理解Blob字段操作提供了实践性的参考。学习和分析这些源码,可以帮助开发者深入理解如何在...
1. **数据准备**:确保ORACLE数据库中的BLOB字段包含所需的数据,并且是完整的。可能需要进行数据验证,以确保所有数据都能被正确读取。 2. **数据导出**:使用ORACLE提供的工具,如SQL*Plus或者PL/SQL Developer,...
本教程将详细讲解如何批量导出Oracle数据库中的BLOB字段并生成文件,适用于需要定期或一次性处理大量图片或其他BLOB数据的场景。 首先,确保你已经在本地安装了Oracle客户端。Oracle客户端提供了SQL*Plus和其他工具...
这篇博客文章“Hibernate操作Oracle中Clob、Blob字段小结”可能会探讨如何在Hibernate中有效地处理这两种类型的数据。 1. **Clob与Blob的理解**: - Clob:Clob是用于存储大量字符数据的类型,例如长篇文章、XML...
mysql导出工具,可导出无注释插入语句,表中字段有blob类数据,插入语句前还有锁表操作语句,适合多种场景
在Delphi中,与数据库交互通常会用到ADO(ActiveX Data Objects)或DBX(Database Express)等组件库,它们支持BLOB字段的读写操作。 在实现这个功能时,TStream类起着核心作用。TStream是一个抽象类,它定义了读写...