oracle--導出、導入blob類型的字段


以下操作記錄了blob字段的導出、導入方法流程

方法原理:利用UTL_FILE將blob字段的內容以二進制的形式導出到txt文檔,然后用dbms_blob將文檔內容導入到指定的數據庫表中。

1、 創建一個文本文檔來保存blob數據。

  這里在E盤home/dhl下創建一個名為text.txt的文件。

2、 創建oracle臨時目錄

1 create or replace directory UTL_FILE_DIR as 'E:/home/dhl/';
2 GRANT read ,write ON DIRECTORY UTL_FILE_DIR TO PUBLIC;

注意: 目錄下面要有text.txt的文件

3、 導出blob數據

這里以SVS.SVS_ACCADM_SEALINFO表這張數據表為例子,其中的SEAL就是BLOB類型的字段

 

 1 DECLARE
 2   file_handle UTL_FILE.FILE_TYPE;
 3   b_lob BLOB;
 4 BEGIN
 5   select 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);
10 END;

 

執行完后,會把這條數據的BLOB類型的數據以二進制的形式寫入到了text.txt的文件中。

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 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     )
24     VALUES
25     (
26     '100007922',
27     EMPTY_BLOB(),
28     NULL,
29     'P',
30     '2019-11-26',
31     NULL,
32     NULL,
33     NULL,
34     NULL,
35     '2019112601',
36     '1199129990231314433',
37     '100003981',
38     'e19b7edfcdee436598367485605921cc57226621258',
39     '4'
40     )
41     RETURN SEAL
42   INTO 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);
49   COMMIT;
50 END;

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM