2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > oracle--导出 导入blob类型的字段

oracle--导出 导入blob类型的字段

时间:2020-01-08 09:35:36

相关推荐

oracle--导出 导入blob类型的字段

oracle--导出、导入blob类型的字段

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类型的字段

1 DECLARE2 file_handle UTL_FILE.FILE_TYPE;3 b_lob BLOB;4 BEGIN5 select JOB_DATA into b_lob from SY_QRTZ_JOB_DETAILS where JOB_NAME='2WNfkfZZ14YUodhnYOfEzbl';6 7 file_handle := utl_file.fopen('UTL_FILE_DIR', 'test.txt', 'W'); 8 utl_file.PUT_RAW(file_handle , b_lob, true); 9 UTL_FILE.FCLOSE(file_handle);10 END;

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

1 DECLARE2 b_file bfile;3 b_lob BLOB;4 BEGIN5 --return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中6 INSERT7 INTO SY_QRTZ_JOB_DETAILS8(9 SCHED_NAME,10 JOB_NAME,11 JOB_GROUP,12 DESCRIPTION,13 JOB_CLASS_NAME,14 IS_DURABLE,15 IS_NONCONCURRENT,16 IS_UPDATE_DATA,17 REQUESTS_RECOVERY,18 JOB_DATA19)20VALUES21(22 'RhScheduler',23 'test6',24 'DEFAULT',25 'test6',26 'com.rh.core.icbc.imp.NImpStateJob',27 '1',28 '0',29 '0',30 '0',31 empty_blob()32)33RETURN JOB_DATA34 INTO b_lob;35 --将文件转换为bfile36 b_file := bfilename('UTL_FILE_DIR', 'test.txt');37 dbms_lob.open(b_file, dbms_lob.file_readonly);38 -- 将b_file中的内容转换到b_lob39 dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));40 dbms_lob.close(b_file);41 COMMIT;42 END;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。