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
- 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) /
- 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';
- 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