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