Oracle
 sql >> Database >  >> RDS >> Oracle

Caricamento di dati immagine in colonne BLOB in Oracle

Hai vari file di immagine JPG, PNG, GIF e BMP che devono essere gestiti e sottoposti a backup nel
database e hai bisogno di un modo per eseguire un caricamento iniziale nel database.

Il caricamento di LOB binari è un po' più semplice del caricamento di LOB basati su testo.

Crea una sequenza per l'identificatore univoco della tabella delle immagini, più la tabella stessa:

crea sequenza img_seq;

crea immagine tabella
(
img_num numero,
img_nm varchar2(100),
img_blb blob,
ins_ts timestamp
);

Quindi, esegui un blocco anonimo per caricare l'immagine SCREEN CAPTURE.BMP nella tabella del database:

dichiara
src_blb bfile; /* punta al BLOB di origine sul file system */
dst_blb blob; /* BLOB di destinazione nella tabella */
src_img_nm varchar2(100) :='Screen Capture.bmp';
src_offset intero :=1; /* dove iniziare nel BLOB di origine */
dst_offset intero :=1; /* dove iniziare nel BLOB di destinazione */
begin
src_blb :=bfilename('LOB_SRC',src_img_nm);
insert into image (img_num, img_nm, img_blb, ins_ts)
values(img_seq.nextval, src_img_nm, empty_blob(), systimestamp)
restituendo img_blb in dst_blb;
dbms_lob.open(src_blb, dbms_lob.lob_readonly);
dbms_lob.loadblobfromfile
(
dest_lob => dst_blb,
src_bfile => src_blb,
amount => dbms_lob.lobmaxsize,
dest_offset => dst_offset,
src_offset => src_offset
);
dbms_lob.close(src_blb);
commit;
dbms_output.put_line('Wrote BLOB to table:' || src_img_nm);
end;

Dopo aver eseguito questo blocco, l'immagine verrà caricata nel BLOB e puoi controllare il record con il seguente comando:

seleziona img_num, img_nm, ins_ts, length(img_blb) dall'immagine;