网站首页 > 技术文章 正文
经常会遇到要给数据库中的blob格式数据文件导出为'.jpg'格式的图片。猛然觉得是该有个小工具直接导出照片了...(小工具产生背景)
实验环境:oracle数据库11.2.0.4,win系统(此实验系统之间差别甚微)实验目的:某张表中图片以blob格式存在数据库中,将其导成“.jpg” 格式。
数据库表格式:
实现步骤:
- 需表中字段有一列为递增字段;此时图片导出将可以以另一列命名----即此场景为:xm.jpg
2. 新建目录并授权;此操作是设置图片导出文件夹。
----首先从数据库中创建目录:当前实验环境下已将dba权限授给scott用户,直接使用scott用户创建了目录。合乎规范的做法是:
使用sys用户或者使用system用户登录:
create direcoty dir as 'E:/photo';----linux系统的话,直接更换路径即可。
grant read,write on directory dir to scott;---此时授权给单个用户即可。或者
grant all on direcotry dir to public;---此授权含义是:将dir目录的所有权限开放给公共角色(此角色是所有的数据库用户都具备)
3.创建存储过程:
此过程为核心内容,看不懂没有关系,会用即可。代码如下:
---
create or replace procedure exphoto(xh varchar2) is
l_file utl_file.file_type;
l_lob blob;
l_offset int:= 1;
l_amount int:= 32767;
l_len int;
l_buffer raw(32767);
x varchar2(100);
begin
select rdphoto into l_lob from photo t where rdid=xh ;
select xm into x from photo where rdid=xh;
l_file:= utl_file.fopen('DIR', x||'.jpg', 'wb', 32767);
l_len:= dbms_lob.getlength(l_lob);
while l_offset< l_len loop
dbms_lob.read(l_lob, l_amount, l_offset, l_buffer);
utl_file.put_raw(l_file, l_buffer, true);
l_offset:= l_offset + l_amount;
end loop;
utl_file.fclose(l_file);
end exphoto;
4.语句调用存储过程导出照片;
declare
cursor cur is
select rdid from photo where rownum <= 10 and rdphoto is not null;
begin
for rec in cur loop
exphoto(rec.rdid);
end loop;
end;
/
效果图:
觉得好的话就给个赞呗,顺便给朋友推荐一下
猜你喜欢
- 2024-10-16 oracle数据库得备份方式 oracle数据库三种备份方式
- 2024-10-16 SmartSQL一款方便快捷的数据库文档查询、导出工具
- 2024-10-16 从零开始学习Oracle之数据备份与还原
- 2024-10-16 Oracle11g中使用expdp导sys用户下的表时报错ORA-39166/ORA-31655
- 2024-10-16 Oracle SQLPlus导出数据到csv文件
- 2024-10-16 Oracle 转换成 MySQL oracle转mysql sql语句
- 2024-10-16 ORACLE 体系 - 14 oracle体系结构思维导图
- 2024-10-16 记一次生产数据库Oracle数据泵导出报ORA-31617错误的解决过程
- 2024-10-16 超级好用的数据库表结构导出工具 数据库导出表结构语句
- 2024-10-16 记Oracle中快速获取表及其各个字段注释的方法
你 发表评论:
欢迎- 06-24发现一款开源宝藏级工作流低代码快速开发平台
- 06-24程序员危险了,这是一个 无代码平台+AI+code做项目的案例
- 06-24一款全新的工作流,低代码快速开发平台
- 06-24如何用好AI,改造自己的设计工作流?
- 06-24濮阳网站开发(濮阳网站建设)
- 06-24AI 如何重塑前端开发,我们该如何适应
- 06-24应届生靠这个Java简历模板拿下了5个offer
- 06-24服务端性能测试实战3-性能测试脚本开发
- 566℃Oracle分析函数之Lag和Lead()使用
- 564℃几个Oracle空值处理函数 oracle处理null值的函数
- 549℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 545℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 543℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 536℃【数据统计分析】详解Oracle分组函数之CUBE
- 526℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 518℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)