oracle--导出、导入blob类型的字段
2016-12-22 16:46
567 查看
blob是oracle中的一个数据类型,保存的是压缩后的二进制形式的大数据。
数据迁移如果涉及到blob字段,都不好处理,因为无法用常规方法进行操作,如:使用select查看该字段,也无法用insert插入该字段的值。
以下记录了blob字段的导出、导入方法流程。
方法原理:利用UTL_FILE将blob字段的内容以二进制的形式导出到txt文档,然后用dbms_blob将文档内容导入到指定的数据库表中
1、创建一个文本文档来保存blob数据
这里在home目录下创建了一个名为test.txt的文件,即/home/dhl/test.txt
2、创建oracle临时目录
3、导出blob数据
这里以SY_QRTZ_JOB_DETAILS这张数据表为例子,其中的JOB_DATA就是blob类型的字段
4、将文档内容导入到指定的数据库表中
数据迁移如果涉及到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 DECLARE 2 file_handle UTL_FILE.FILE_TYPE; 3 b_lob BLOB; 4 BEGIN 5 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 DECLARE 2 b_file bfile; 3 b_lob BLOB; 4 BEGIN 5 --return a into b_lob将该列与一个blog类型的变量绑定在一起,以后只要为b_lob赋值,即等于将该值插入了表中 6 INSERT 7 INTO SY_QRTZ_JOB_DETAILS 8 ( 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_DATA 19 ) 20 VALUES 21 ( 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 ) 33 RETURN JOB_DATA 34 INTO b_lob; 35 --将文件转换为bfile 36 b_file := bfilename('UTL_FILE_DIR', 'test.txt'); 37 dbms_lob.open(b_file, dbms_lob.file_readonly); 38 -- 将b_file中的内容转换到b_lob 39 dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file)); 40 dbms_lob.close(b_file); 41 COMMIT; 42 END;
相关文章推荐
- ORACLE 还有BLOB及CLOB等类型字段的表的导出导入
- 文件的导入导出(CLOB类型字段)_Oracle_java
- oracle中导出和导入部分blob,clob字段
- 解决oracle中存在blob大字段时的导入导出的问题
- oracle中导出和导入含有blob,clob字段的表数据
- 导入数据库时,如果导出与导入的数据库表空间不一样且表中存在LOB类型字段(BLOB、CLOB等),IMP时失败,提示表空间不存在
- oracle中blob字段转换成varchar类型
- oracle导出、导入表和字段的注释
- 把System.byte[]类型数据写入Oracle的blob类型字段中
- oracle字段类型blob,clob,nclob
- Oracle中,将VARchar2类型的字符串写入BLOB类型的字段中
- JAVA对Oracle中BLOB、CLOB类型字段的操作说明
- 往Blob类型字段插入图片,使用与MySql或者Oracle
- System.Data.OracleClient调用带blob等大字段类型参数的存储过程
- 简单搞一下 System.Data.OracleClient调用带blob、clob等大字段类型参数的存储过程!
- oracle 外部表导入时间日期类型数据,多字段导入
- System.Data.OracleClient调用带blob等大字段类型参数的存储过程
- 通过JDBC 操作 ORACLE BLOB,CLOB字段类型
- Hibernate操作Blob类型字段出现java.lang.AbstractMethodError: oracle.jdbc.driver.OracleResultSetImpl.getBlob(Ljava/lang/String;)Ljava/sql/
- oracle dmp文件导入 与 blob图片导出