zoukankan      html  css  js  c++  java
  • 使用以下代码可以插入BLOB类型的图片或pdf文档到Oracle数据库中:

    drop table IMAGE_LOB;
    CREATE TABLE IMAGE_LOB (
       T_ID VARCHAR2 (5) NOT NULL,
       T_IMAGE BLOB NOT NULL
       );
        
    --插入blob文件 
    CREATE OR REPLACE DIRECTORY IMAGES AS '/home/oracle/';
    CREATE OR REPLACE NONEDITIONABLE PROCEDURE IMG_INSERT(TID      VARCHAR2,
                                                          FILENAME VARCHAR2) AS
        F_LOB BFILE;
        B_LOB BLOB;
    BEGIN
        INSERT INTO IMAGE_LOB
            (T_ID, T_IMAGE)
        VALUES
            (TID, EMPTY_BLOB()) RETURN T_IMAGE INTO B_LOB;
        F_LOB := BFILENAME('IMAGES', FILENAME);
        DBMS_LOB.FILEOPEN(F_LOB, DBMS_LOB.FILE_READONLY);
        DBMS_LOB.LOADFROMFILE(B_LOB, F_LOB, DBMS_LOB.GETLENGTH(F_LOB));
        DBMS_LOB.FILECLOSE(F_LOB);
        COMMIT;
    END;
     /
    BEGIN
        IMG_INSERT('1','1.jpg');
        IMG_INSERT('2','2.jpg');
        IMG_INSERT('3','1.pdf');
     END;
    /
    select length(t_image) from image_lob; --可以查看该字段占用的空间大小
    SELECT * FROM image_lob;
    ----------- 导出blob文件
    DECLARE
        l_file   utl_file.file_type;
        --l_lob    BLOB;
        l_offset INT := 1;
        l_amount INT := 32767;
        l_len    INT;
        l_buffer RAW(32767);
    BEGIN
        FOR cur IN (SELECT t_image,t.t_id FROM image_lob t) LOOP
             
                    l_file := utl_file.fopen('IMAGES', cur.t_id||'.jpg', 'wb', 32767);
            l_len  := dbms_lob.getlength(cur.t_image);
                    l_offset := 1;  
                     
            WHILE l_offset < l_len LOOP
                dbms_lob.read(cur.t_image, l_amount, l_offset, l_buffer);
                utl_file.put_raw(l_file, l_buffer, TRUE);
                l_offset := l_offset + l_amount;
            END LOOP;
                     
            utl_file.fclose(l_file);
                     
        END LOOP;
    END;
    /
  • 相关阅读:
    Redis学习之一--基础知识
    工作流学习之--TPFlow数据库分析
    什么是域名?什么网站名?什么是URL
    SASS的升级版--SCSS 基本介绍+Sass使用详解
    vue调试工具vue-devtools的安装(win10系统,最新2020年6月的解决方案)
    如何运行vue项目
    用WebStorm搭建vue项目
    Terminal怎么停止VUE项目
    VUE 在一个组件中引用另外一个组件的两种方式
    Vue.js——60分钟快速入门 开发· webpack 中文文档
  • 原文地址:https://www.cnblogs.com/ios9/p/13048186.html
Copyright © 2011-2022 走看看