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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle--导出、导⼊blob类型的字段
以下操作记录了blob字段的导出、导⼊⽅法流程。

⽅法原理:利⽤UTL_FILE将blob字段的内容以⼆进制的形式导出到txt⽂档,然后⽤dbms_blob将⽂档内容导⼊到指定的数据库表中。

1、创建⼀个⽂本⽂档来保存blob数据。

这⾥在E盘home/dhl下创建⼀个名为text.txt的⽂件。

2、创建oracle临时⽬录
1create or replace directory UTL_FILE_DIR as'E:/home/dhl/';
2GRANT read ,write ON DIRECTORY UTL_FILE_DIR TO PUBLIC;
注意: ⽬录下⾯要有text.txt的⽂件
3、导出blob数据
这⾥以SVS.SVS_ACCADM_SEALINFO表这张数据表为例⼦,其中的SEAL就是BLOB类型的字段
1DECLARE
2 file_handle UTL_FILE.FILE_TYPE;
3 b_lob BLOB;
4BEGIN
5select SEAL into b_lob from SVS.SVS_ACCADM_SEALINFO where ID='100007922';
6
7 file_handle := utl_file.fopen('UTL_FILE_DIR', 'test.txt', 'WB');
8 utl_file.put_raw(file_handle , b_lob, true);
9 UTL_FILE.FCLOSE(file_handle);
10END;
执⾏完后,会把这条数据的BLOB类型的数据以⼆进制的形式写⼊到了text.txt的⽂件中。

4、将⽂档内容导⼊到指定的数据库表中
1DECLARE
2 b_file bfile;
3 b_lob BLOB;
4BEGIN
5--return a into b_lob将该列与⼀个blog类型的变量绑定在⼀起,以后只要为b_lob赋值,即等于将该值插⼊了表中
6INSERT
7INTO SVS.SVS_ACCADM_SEALINFO
8 (
9 ID,
10 SEAL,
11 SMALL_CODE,
12 SEAL_TYPE,
13 START_DATE,
14 END_DATE,
15 NO_USE_DATE,
16 MEMO,
17 SEAL_POSITION,
18 ACC_NO,
19 SEAL_CARD_ID,
20 SEAL_CARD_NO,
21 DOC_OBJECT_ID,
22 CRUD_FLAG
23 )
24VALUES
25 (
26'100007922',
27 EMPTY_BLOB(),
28NULL,
29'P',
30'2019-11-26',
31NULL,
32NULL,
33NULL,
34NULL,
35'2019112601',
36'1199129990231314433',
37'100003981',
38'e19b7edfcdee436598367485605921cc57226621258',
39'4'
40 )
41RETURN SEAL
42INTO b_lob;
43--将⽂件转换为bfile
44 b_file := bfilename('UTL_FILE_DIR', 'test.txt');
45 dbms_lob.open(b_file, dbms_lob.file_readonly);
46-- 将b_file中的内容转换到b_lob
47 dbms_lob.loadfromfile(b_lob,b_file,dbms_lob.getlength(b_file));
48 dbms_lob.close(b_file);
49COMMIT;
50END;。

相关文档
最新文档