Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie füge ich eine Datei in die Oracle-Datenbank ein?

In diesem Tutorial erfahren Sie, wie Sie eine Datei in die Oracle-Datenbank einfügen. Der Dateityp kann ein PDF, ein Bild oder ein beliebiges Dokument sein. Ich verwende den BLOB-Datentyp in der Oracle-Tabelle, um das folgende Beispiel zu demonstrieren.

Befolgen Sie diese Schritte, um eine Datei (PDF, Bild, Docx, Xlsx usw.) in die BLOB-Spalte der Oracle-Datenbanktabelle einzufügen

  1. Erstellen Sie eine Tabelle im Oracle-Datenbankschema mit einer BLOB-Spalte, wie im folgenden Beispiel gezeigt.
CREATE TABLE ext_files (
file_name VARCHAR2 (1000),
file_content BLOB)
/
  1. Erstellen Sie dann ein Datenbankverzeichnisobjekt, aus dem Sie die Dateien einfügen möchten, wie im folgenden Beispiel gezeigt.
CREATE OR REPLACE DIRECTORY PDF_FILES As 'C:\my_pdf_files';
  1. Erstellen Sie nun die folgende Funktion, um eine Datei in einen BLOB-Datentyp zu konvertieren. Stellen Sie jedoch sicher, dass Sie den PDF_FILES-Verzeichnisnamen in der folgenden Funktion mit dem Namen ändern, mit dem Sie das Verzeichnisobjekt erstellt haben.
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;
/

Jetzt sind Sie bereit für den Test zum Einfügen einer Datei in die Oracle-Datenbanktabelle.

Test zum Einfügen einer PDF-Datei

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

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

COMMIT;
END;
/

Test zum Einfügen einer Bilddatei (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;
/

Überprüfen Sie die Tabelle auf Aufzeichnungen

SELECT * FROM EXT_FILES;

Ausgabe

Siehe auch:

  • Entpacken Sie eine ZIP-Datei mit PL/SQL
  • ZIP-Dateien in PL/SQL