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

Como inserir um arquivo no banco de dados Oracle?


Neste tutorial, você aprenderá como inserir um arquivo no banco de dados Oracle. O tipo de arquivo pode ser um PDF, uma Imagem ou qualquer documento. Estou usando o tipo de dados BLOB na tabela Oracle para demonstrar o exemplo a seguir.

Siga estas etapas para inserir um arquivo (PDF, imagem, Docx, Xlsx, etc.) na coluna BLOB da tabela do banco de dados Oracle

  1. Crie uma tabela no esquema de banco de dados Oracle com uma coluna BLOB, conforme mostrado no exemplo abaixo.
CREATE TABLE ext_files (
file_name VARCHAR2 (1000),
file_content BLOB)
/
  1. Em seguida, crie um objeto de diretório de banco de dados de onde você deseja inserir os arquivos, conforme mostrado no exemplo abaixo.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
  1. Agora crie a seguinte função para converter um arquivo em um tipo de dados BLOB. Mas certifique-se de alterar o nome do diretório PDF_FILES na função abaixo com o nome que você criou para o objeto de diretório.
CREATE OR REPLACE FUNCTION file_to_blob(p_file_name VARCHAR2) RETURN BLOB AS
dest_loc BLOB := empty_blob();
src_loc BFILE := BFILENAME('PDF_FILES', p_file_name);
BEGIN
DBMS_LOB.OPEN(src_loc, DBMS_LOB.LOB_READONLY);

DBMS_LOB.CREATETEMPORARY(
lob_loc => dest_loc
, cache => true
, dur => dbms_lob.session
);

DBMS_LOB.OPEN(dest_loc, DBMS_LOB.LOB_READWRITE);

DBMS_LOB.LOADFROMFILE(
dest_lob => dest_loc
, src_lob => src_loc
, amount => DBMS_LOB.getLength(src_loc));

DBMS_LOB.CLOSE(dest_loc);
DBMS_LOB.CLOSE(src_loc);

RETURN dest_loc;
END file_to_blob;
/

Agora você está pronto para o teste de inserir um arquivo na tabela do banco de dados Oracle.

Teste para inserir um arquivo PDF

DECLARE
v_blob BLOB;
BEGIN
v_blob := file_to_blob ('emp.pdf');

INSERT INTO ext_files
VALUES ('emp.pdf', v_blob);

COMMIT;
END;
/

Teste para inserir um arquivo de imagem (JPG)

DECLARE
v_blob BLOB;
BEGIN
v_blob := file_to_blob ('oracle-18c-install-step-1.JPG');

INSERT INTO ext_files
VALUES ('oracle-18c-install-step-1.JPG', v_blob);

COMMIT;
END;
/

Verifique a Tabela de Registros

SELECT * FROM EXT_FILES;

Saída



Veja também:

  • Descompacte um arquivo ZIP usando PL/SQL
  • Arquivos ZIP em PL/SQL