Oracle
 sql >> Base de données >  >> RDS >> Oracle

Chargement de données d'image dans des colonnes BLOB dans Oracle

Vous avez divers fichiers d'image JPG, PNG, GIF et BMP qui doivent être gérés et sauvegardés dans la
base de données, et vous avez besoin d'un moyen d'effectuer un chargement initial dans la base de données.

Le chargement de LOB binaires est un peu plus simple que le chargement de LOB textuels.

Créez une séquence pour l'identifiant unique de votre tableau d'images, plus le tableau lui-même :

créer la séquence img_seq ;

créer une image de table
(
img_num number,
img_nm varchar2(100),
img_blb blob,
ins_ts timestamp
);

Ensuite, exécutez un bloc anonyme pour charger l'image SCREEN CAPTURE.BMP dans votre table de base de données :

declare
src_blb bfile ; /* pointe vers le BLOB source sur le système de fichiers */
dst_blb blob ; /* BLOB destination dans la table */
src_img_nm varchar2(100) :='Screen Capture.bmp';
src_offset integer :=1; /* où commencer dans le BLOB source */
dst_offset integer :=1; /* où commencer dans le BLOB cible */
begin
src_blb :=bfilename('LOB_SRC',src_img_nm);
insérer dans l'image (img_num, img_nm, img_blb, ins_ts)
values(img_seq.nextval, src_img_nm, empty_blob(), systimestamp)
renvoyant img_blb dans 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;

Après avoir exécuté ce bloc, l'image sera chargée dans le blob et vous pourrez vérifier l'enregistrement avec la commande suivante :

sélectionnez img_num, img_nm, ins_ts, length(img_blb) à partir de l'image ;