Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Carregando dados de imagem em colunas BLOB no Oracle

Você tem vários arquivos de imagem JPG, PNG, GIF e BMP que precisam ser gerenciados e armazenados em backup no banco de dados
e você precisa de uma maneira de fazer um carregamento inicial no banco de dados.

Carregar LOBs binários é um pouco mais simples do que carregar LOBs baseados em texto.

Crie uma sequência para o identificador exclusivo da sua tabela de imagens, além da própria tabela:

criar sequência img_seq;

criar imagem da tabela
(
img_num número,
img_nm varchar2(100),
img_blb blob,
ins_ts timestamp
);

Em seguida, execute um bloco anônimo para carregar a imagem SCREEN CAPTURE.BMP em sua tabela de banco de dados:

declare
src_blb bfile; /* aponta para o BLOB de origem no sistema de arquivos */
dst_blb blob; /* BLOB de destino na tabela */
src_img_nm varchar2(100) :='Screen Capture.bmp';
src_offset integer :=1; /* onde começar no BLOB de origem */
dst_offset integer :=1; /* onde começar no BLOB alvo */
começar
src_blb :=bfilename('LOB_SRC',src_img_nm);
inserir na imagem (img_num, img_nm, img_blb, ins_ts)
values(img_seq.nextval, src_img_nm, empty_blob(), systimestamp)
retornando img_blb para dst_blb;
dbms_lob.open(src_blb, dbms_lob.lob_readonly);
dbms_lob.loadblobfromfile
(
dest_lob => dst_blb,
src_bfile => src_blb,
quantidade => dbms_lob.lobmaxsize,
dst_offset => dst_offset,
src_offset => src_offset
);
dbms_lob.close(src_blb);
commit;
dbms_output.put_line('Escreveu BLOB na tabela:' || src_img_nm);
end;

Após executar este bloco, a imagem será carregada no blob e você poderá verificar o registro com o seguinte comando:

selecione img_num, img_nm, ins_ts, comprimento(img_blb) da imagem;