blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据。

数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用insert插入该字段的值。

以下记录了blob字段的导出、导入方法流程。

方法原理:利用UTL_FILE将blob字段的内容以二进制的形式导出到txt文档,然后用dbms_blob将文档内容导入到指定的数据库表中

1、创建一个文本文档来保存blob数据

这里在home目录下创建了一个名为test.txt的文件,即/home/dhl/test.txt

2、创建oracle临时目录

create or replace directory UTL_FILE_DIR as '/home/dhl/';

3、导出blob数据

这里以SY_QRTZ_JOB_DETAILS这张数据表为例子,其中的JOB_DATA就是blob类型的字段

 DECLARE
file_handle UTL_FILE.FILE_TYPE;
b_lob BLOB;
BEGIN
select JOB_DATA into b_lob from SY_QRTZ_JOB_DETAILS where JOB_NAME='2WNfkfZZ14YUodhnYOfEzbl'; file_handle := utl_file.fopen('UTL_FILE_DIR', 'test.txt', 'W');
utl_file.PUT_RAW(file_handle , b_lob, true);
UTL_FILE.FCLOSE(file_handle);
END;

4、将文档内容导入到指定的数据库表中

 DECLARE
b_file bfile;
b_lob BLOB;
BEGIN
--return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中
INSERT
INTO SY_QRTZ_JOB_DETAILS
(
SCHED_NAME,
JOB_NAME,
JOB_GROUP,
DESCRIPTION,
JOB_CLASS_NAME,
IS_DURABLE,
IS_NONCONCURRENT,
IS_UPDATE_DATA,
REQUESTS_RECOVERY,
JOB_DATA
)
VALUES
(
'RhScheduler',
'test6',
'DEFAULT',
'test6',
'com.rh.core.icbc.imp.NImpStateJob',
'',
'',
'',
'',
empty_blob()
)
RETURN JOB_DATA
INTO b_lob;
--将文件转换为bfile
b_file := bfilename('UTL_FILE_DIR', 'test.txt');
dbms_lob.open(b_file, dbms_lob.file_readonly);
-- 将b_file中的内容转换到b_lob
dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));
dbms_lob.close(b_file);
COMMIT;
END;

oracle--导出、导入blob类型的字段的更多相关文章

  1. oracle 11g r2 blob类型getString报错问题

    摘要: 问题: 在hibernate中实体类中blob类型字段为 private String textBlob; 查询时报错: java.sql.SQLException: 无效的列类型: getS ...

  2. Oracle导出导入dmp文件(exp.imp命令行)

    1.说明 使用Oracle命令行导出导入dmp文件, 从而在两个数据库之间快速转移数据, 也可以用来作为数据库的备份, 将来可以快速恢复数据. 命令:导出exp.导入imp 步骤: 使用Oracle的 ...

  3. Oracle导出导入数据

    Oracle数据导入导出imp/exp就相当与oracle数据还原与备份, 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用. 可以在SQLPLUS.EXE或者DOS(命令行)中 ...

  4. oracle导出/导入 expdp/impdp

    Oracle使用EXPDP和IMPDP数据泵进行导出导入的方法(常用方法) 使用expdp和impdp时应该注重的事项: 1.exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用 ...

  5. Oracle导出/导入数据库的三种模式

    导出 模式一:全量导出(慎用) exp 用户名/密码@数据库实例 owner=用户名 file=文件存储路径 log=日志存储路径 full=y 栗子:exp Mark/123456@151.2.*. ...

  6. BLOB类型的字段用于存储二进制数据

    MySQL中,BLOB是个类型系列,包括:TinyBlob.Blob.MediumBlob.LongBlob,这几个类型之间的唯一区别是在存储文件的最大大小上不同. MySQL的四种BLOB类型类型 ...

  7. oracle 导出导入数据

    在window的运行中输出cmd,然后执行下面的一行代码, imp blmp/blmp@orcl full=y file=D:\blmp.dmp OK,问题解决.如果报找不到该blmp.dmp文件,就 ...

  8. Oracle导出导入数据库的方式

    一.导入导出.dmp文件 利用cmd的操作命令导出,详情如下(备注:方法二是转载网上的教程):1:G:\Oracle\product\10.1.0\Client_1\NETWORK\ADMIN目录下有 ...

  9. oracle 导出导入常见问题

    oracle 导入导出常见有两种方法 EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户 ...

随机推荐

  1. SQL 查看数据库的列数

    查询表名为History的所有列名 1 select name from syscolumns where id=object_id('History') 查询表名为History的所有列名个数   ...

  2. 一键启动NameNode和DataNode--shell脚本

    使用shell脚本,一键启动hadoop中的NameNode和DataNode.分为普通版和装逼版.装逼版较普通版多了很多判断和信息提示,当然主要还是为了我联系shell脚本而写的. 如果想实现复用, ...

  3. SSM框架总结(1)

    ----------------------20170106-------------------------------------- 1.mabatis.genertor中自动生成文件,需要在ge ...

  4. ASP.NET知识总结(8.AJAX异步)

    AJAX:”Asynchronous JavaScript and XML” 中文意思:异步JavaScript和XML. 指一种创建交互式网页应用的网页开发技术.   不是指一种单一的技术,而是有机 ...

  5. linux学习日记之鸟哥

    2016年10月11日星期二 df命令解释:用于显示磁盘分区上可以使用的磁盘空间.默认显示单位为KB,可以用该命令来获取硬盘被占用了多少空间,目前还剩多少空间等信息.用法:df 选项 参数例:df – ...

  6. sql中NVARCHAR(MAX) 性能和占空间分析 varchar(n),nvarchar(n) 长度性能及所占空间分析

    varchar(n),nvarchar(n) 中的n怎么解释: nvarchar(n)最多能存n个字符,不区分中英文. varchar(n)最多能存n个字节,一个中文是两个字节. 所占空间: nvar ...

  7. Trick蠕虫病毒来袭!幕后主使竟是一名高中生“黑客”!

    黑客一直是美国电影中的重要元素,很多经典大片中都有黑客的身影,如战争游戏.黑客帝国等.电影中黑客总是神通广大.行侠仗义,<战争游戏>中的年轻黑客大卫•莱特曼利用黑客技术避免引爆核武器,&l ...

  8. 多Linux系统如何复用/home目录

    Brief: 1./home单独分区:2.不同系统/home建立不同的用户名:3.不同系统/home对其他用户授权 Linux下/home文件夹可以通用吗?例如我机器上同时装了两个Linux系统,可以 ...

  9. C 标准库系列之limits.h

    limits.h 类似于float.h,其定义了一些列类型的值的范围.限制值,也就是说该类型的值不可以大于该上界或者小于该类型值的下界: glibc中宏定义了一下的值: # define MB_LEN ...

  10. JSON对象格式美化

    JSON.stringify(obh, null, "\t"); 这段代码就可以对某个js对象美化输出