当前位置: 首页 > news >正文

oracle中blob的表导出,把表中的blob字段导出,并且用一个唯一名称来命名导出的文件。...

需求是发生在迁移数据的时候,

我们的源库,有一个字段设计的为blob类型,但是目标库,人家设计的是varchar2类型,然后这个varchar2,存放的只是相当于一个指针的东西。

思路是通过循环,给表中每一条记录要导出的blob文件赋值。

首先先创建一个目录,

create or replace directory BLOBDIR as 'D:\导出文件'

存储过程如下:

CREATE OR REPLACE PROCEDURE BLOB_EXPORT is

filename  varchar2(32);

NUM NUMBER;

l_file UTL_FILE.FILE_TYPE;

l_buffer RAW(32767);

l_amount BINARY_INTEGER := 32767;

l_pos INTEGER := 1;

l_blob BLOB;

l_blob_len INTEGER;

begin

SELECT COUNT(1) INTO NUM FROM cjcgzl_cjcgtsjt;

FOR I IN 1 .. NUM LOOP

WITH TB AS(SELECT  cjsjt ,sjtid, ROW_NUMBER() OVER (ORDER BY sjtid ) RR FROM cjcgzl_cjcgtsjt

)

SELECT cjsjt ,sjtid

INTO l_blob ,filename

FROM TB  WHERE RR=I;

l_blob_len := DBMS_LOB.GETLENGTH(l_blob);

l_file := UTL_FILE.FOPEN('BLOBDIR',filename,'wb', l_blob_len);

WHILE L_POS < l_blob_len LOOP

DBMS_LOB.READ (l_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);

END LOOP;

END BLOB_EXPORT;

学习,整理,修改过的,通过循环,就可以把每个blob字段都导出,并且可以与该条数据其他数据项对应,我们做的时候,是把这些文件放到另一台服务器上,说是为了提升oralce性能,但个人感觉没那么大的必要,因为我们的数据还没有达到T的级别,而且这些文件占用的只是磁盘空间。

相关文章:

  • linux zip压缩排除目录,Linux系统zip压缩命令详细参数,附文件排除选项的正确用法...
  • linux 内核版本 4.4,Linux Kernel 4.4 正式发布下载
  • linux内核找不到sata分区表,分区表坏了,我的linux不见了
  • amd支持的Linux内核,Linux Kernel 4.7.2版本发布:改善对AMDGPU和ARM64的支持
  • linux grep 获取当天时间段,linux – 如何在一个时间范围内grep httpd error_log?
  • Linux内核i2c通信,绝对干货!基于Cortex-A9,分析Linux内核I2C架构
  • linux中文本文件过滤搜索,Linux命令(八)过滤文本 grep
  • linux获得ram地址,Linux 如何查看系統硬體的記憶體(RAM)資訊
  • linux qt多屏幕输出,QT5 Ubuntu下c++调用linux命令、显示输出、执行多条命令
  • linux 获取时间间隔,获取时间间隔避免误差的方法
  • linux下for循环怎么退出,Linux之for循环进程终止的方法
  • linux cp scp rsync,为什么我的rsync与纯cp甚至scp相比都这么慢?
  • c语言队列的基本操作实验报告,数据结构栈和队列实验报告C语言源码(程序在C-Free下通过) .doc...
  • c语言单片机掉电模式程序,单片机掉电唤醒程序求解
  • 优秀C语言程序设计,C语言程序设计_优秀讲义.ppt
  • JavaScript 奇技淫巧
  • JS+CSS实现数字滚动
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Netty源码解析1-Buffer
  • 不上全站https的网站你们就等着被恶心死吧
  • 成为一名优秀的Developer的书单
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 小李飞刀:SQL题目刷起来!
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 阿里云ACE认证学习知识点梳理
  • 第二十章:异步和文件I/O.(二十三)
  • ​configparser --- 配置文件解析器​
  • ​第20课 在Android Native开发中加入新的C++类
  • # 数论-逆元
  • #Spring-boot高级
  • (06)金属布线——为半导体注入生命的连接
  • (12)Linux 常见的三种进程状态
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (C++20) consteval立即函数
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (十一)图像的罗伯特梯度锐化
  • (四)JPA - JQPL 实现增删改查
  • (算法)Travel Information Center
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)Mysql的优化设置
  • (转)关于多人操作数据的处理策略
  • (转载)虚函数剖析
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .NET Micro Framework初体验
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .net 受管制代码
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 使用反射注册事件