En este tutorial, aprenderá cómo insertar un archivo en la base de datos Oracle. El tipo de archivo puede ser un PDF, una imagen o cualquier documento. Estoy usando el tipo de datos BLOB en la tabla de Oracle para demostrar el siguiente ejemplo.
Siga estos pasos para insertar un archivo (PDF, imagen, Docx, Xlsx, etc.) en la columna BLOB de la tabla de la base de datos de Oracle
- Cree una tabla en el esquema de la base de datos de Oracle con una columna BLOB, como se muestra en el siguiente ejemplo.
CREATE TABLE ext_files ( file_name VARCHAR2 (1000), file_content BLOB) /
- Luego, cree un objeto de directorio de base de datos desde donde desea insertar los archivos, como se muestra en el siguiente ejemplo.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
- Ahora cree la siguiente función para convertir un archivo en un tipo de datos BLOB. Pero asegúrese de cambiar el nombre del directorio PDF_FILES en la siguiente función con el nombre con el que creó el objeto de directorio.
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; /
Ahora está listo para la prueba de insertar un archivo en la tabla de la base de datos de Oracle.
Prueba para insertar un archivo PDF
DECLARE v_blob BLOB; BEGIN v_blob := file_to_blob ('emp.pdf'); INSERT INTO ext_files VALUES ('emp.pdf', v_blob); COMMIT; END; /
Prueba para insertar un archivo de imagen (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; /
Revise la Tabla de Registros
SELECT * FROM EXT_FILES;
Salida
Ver también:
- Descomprimir un archivo ZIP usando PL/SQL
- Archivos ZIP en PL/SQL