sql >> Databasteknik >  >> RDS >> Oracle

Laddar bilddata till BLOB-kolumner i Oracle

Du har olika JPG-, PNG-, GIF- och BMP-bildfiler som måste hanteras och säkerhetskopieras i
databasen, och du behöver ett sätt att göra en första inläsning i databasen.

Att ladda binära LOB:er är lite enklare än att ladda textbaserade LOB:er.

Skapa en sekvens för din bildtabells unika identifierare, plus själva tabellen:

skapa sekvens img_seq;

skapa tabellbild
(
img_num number,
img_nm varchar2(100),
img_blb blob,
ins_ts timestamp
);

Kör sedan ett anonymt block för att ladda bilden SCREEN CAPTURE.BMP till din databastabell:

deklarera
src_blb bfile; /* peka på källan BLOB på filsystemet */
dst_blb blob; /* destination BLOB i tabell */
src_img_nm varchar2(100) :='Screen Capture.bmp';
src_offset heltal :=1; /* var ska man börja i källkoden BLOB */
dst_offset heltal :=1; /* var ska man börja i mål-BLOB */
begynn
src_blb :=bfilename('LOB_SRC',src_img_nm);
infoga i bild (img_num, img_nm, img_blb, ins_ts)
värden(img_seq.nextval, src_img_nm, empty_blob(), systimestamp)
returerar img_blb till dst_blb;
dbms_lob.open(src_blb, dbms_lob.lob_readonly);
dbms_flobe>(
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('Skrev BLOB till tabellen:' || src_img_nm);
slut;

Efter att ha kört detta block kommer bilden att laddas in i blob och du kan kontrollera posten med följande kommando:

välj img_num, img_nm, ins_ts, length(img_blb) från bilden;

  1. Hur ställer man in variabel från en SQL-fråga?

  2. Ett enkelt användningsfall för index på primärnycklar

  3. Hur man byter namn på en tabell i Microsoft Access

  4. Är det möjligt att migrera från Realm till SQLite?