Monday, August 19, 2013

How to insert a LOB (pdf,doc,jpeg etc) in a Oracle Database.

Generally LOB( BLOBs , CLOBs) are not inserted in a table with normal insertion method. To insert a LOB object we have to move with certain steps. PFB steps to insert a LOB object in Oracle Table :-

1. Create a Table having a LOB column.

  SQL>   create table LOB_INSERT
(
        LOB_id     number(12),
        LOB_name   varchar2(80),
        file_size       number,
        LOB_file       blob
)  ;

Table created.

2. Create a directory in FS so that Oracle can access files in that directory.

SQL> create or replace directory LOB as '/home/oracle';

Directory created.

NOTE :- Directory oracle has to be physically present in FS.

3. Now copy files in oracle directory which you want to insert in LOB_INSERT table and then run the below script to insert LOB objects in LOB_INSERT table.

SQL> declare
    l_size      number;
  2    3      l_file_ptr  bfile;
  4      l_blob      blob;
  5  begin
  6      l_file_ptr := bfilename('LOB ', 'health_check.html');
  7      dbms_lob.fileopen(l_file_ptr);
  8      l_size := dbms_lob.getlength(l_file_ptr);
  9      for ctr in 1 .. 3 loop
 10          insert into LOB_INSERT
 11          (
 12               LOB_id ,
 13          LOB_name,
 14          file_size,
 15          LOB_file
 16          )
 17          values
 18          (
 19              ctr,
 20              'filenumber '||ctr,
 21              null,
 22              empty_blob()
 23          )
 24          returning LOB_file into l_blob;
 25          dbms_lob.loadfromfile(l_blob, l_file_ptr, l_size);
 26      end loop;
 27      commit;
 28      dbms_lob.close(l_file_ptr);
 29  end;
 30  /

PL/SQL procedure successfully completed.

This procedure will insert three records health_check.html file in  LOB_INSERT table.

SQL>  select * from LOB_INSERT;

    LOB_ID LOB_NAME                        FILE_SIZE LOB_FILE
---------- ------------------------------ ---------- ----------------------------------------
         1 filenumber 1                              3C68746D6C3E0A3C686561643E0A3C6D65746120
                                                     687474702D65717569763D22436F6E74656E742D
                                                     547970652220636F6E74656E743D22746578742F
                                                     68746D6C3B20636861727365743D5554462D3822

         2 filenumber 2                              3C68746D6C3E0A3C686561643E0A3C6D65746120
                                                     687474702D65717569763D22436F6E74656E742D
                                                     547970652220636F6E74656E743D22746578742F
                                                     68746D6C3B20636861727365743D5554462D3822

         3 filenumber 3                              3C68746D6C3E0A3C686561643E0A3C6D65746120

    LOB_ID LOB_NAME                        FILE_SIZE LOB_FILE
---------- ------------------------------ ---------- ----------------------------------------
                                                     687474702D65717569763D22436F6E74656E742D
                                                     547970652220636F6E74656E743D22746578742F
                                                     68746D6C3B20636861727365743D5554462D3822

This way we can insert LOB files in Oracle Table.

I hope this article helped you.

Regards,
Amit Rath

No comments:

Post a Comment