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;
    /
  • 相关阅读:
    什么,你还不会Mysql主从复制???快来看
    MySQL二进制安装(版本:5.7.26)
    MySQL--备份恢复【Mysqdump+xtrabackup(XBK)】
    Mysql日志分析(错误日志,Binlog日志,慢日志),有惊喜哦
    Mysql多实例启动
    Zabbix服务自定义监控和模板
    Centos7安装Zabbix服务端、Zabbix客户端和Win客户端配置(源码编译安装)
    运维工作经验汇总---------高级运维工程师
    手误【删库】 == 跑路,不存在的 ——删瓦辛格
    python——map()函数
  • 原文地址:https://www.cnblogs.com/ios9/p/13048186.html
Copyright © 2011-2022 走看看