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;
    /
  • 相关阅读:
    IIS10中使用OpenSSL来创建CA并且签发SSL证书
    vim简单题练习-------出自《鸟哥的linux私房菜》第309页码题目
    Linux删除命令rm
    CentOS下Vim加密解密文本
    Linux中bash shell环境变量
    Linux文件系统损坏导致无法正常启动与fsck修复工具
    rm -rf /*时遇到的趣事
    Linux中tree无法正常显示中文的解决方法
    执行shell脚本的四种方式
    私有网络(VPC)概述
  • 原文地址:https://www.cnblogs.com/ios9/p/13048186.html
Copyright © 2011-2022 走看看