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