Oracle
 sql >> Database >  >> RDS >> Oracle

Come inserire un file nel database Oracle?

In questo tutorial imparerai come inserire un file nel database Oracle. Il tipo di file può essere un PDF, un'immagine o qualsiasi documento. Sto usando il tipo di dati BLOB nella tabella Oracle per dimostrare il seguente esempio.

Seguire questi passaggi per inserire un file (PDF, immagine, Docx, Xlsx, ecc.) nella colonna BLOB della tabella del database Oracle

  1. Crea una tabella nello schema del database Oracle con una colonna BLOB, come mostrato nell'esempio seguente.
CREATE TABLE ext_files (
file_name VARCHAR2 (1000),
file_content BLOB)
/
  1. Quindi crea un oggetto directory del database da cui desideri inserire i file, come mostrato nell'esempio seguente.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
  1. Ora crea la seguente funzione per convertire un file in un tipo di dati BLOB. Ma assicurati di modificare il nome della directory PDF_FILES nella funzione seguente con il nome con cui hai creato l'oggetto directory.
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;
/

Ora sei pronto per il test per inserire un file nella tabella del database Oracle.

Test per inserire un file PDF

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

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

COMMIT;
END;
/

Test per inserire un file immagine (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;
/

Controlla i record nella tabella

SELECT * FROM EXT_FILES;

Uscita

Vedi anche:

  • Decomprimi un file ZIP utilizzando PL/SQL
  • File ZIP in PL/SQL