sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo insertar un archivo en la base de datos Oracle?

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

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