I dette blogindlæg giver jeg et eksempel på at ZIP en fil i PL/SQL. Jeg bruger Alexandria PL/SQL Util Library til at udføre denne opgave. Det samme bibliotek brugte jeg til eksemplet med eksport af data til Excel fra Oracle Database-tabel. Følg disse trin for at oprette en ZIP-fil ved hjælp af PL/SQL i Oracle.
Opret en ZIP-fil i Oracle ved hjælp af PL/SQL
- Download først Alexandria PL/SQL-biblioteket fra Github'en ved at bruge følgende link Download.
- Når du har downloadet filen, skal du udpakke den og finde zip_util_pkg.pks og zip_util_pkg.pkb filer i \alexandria-plsql-utils-master\ora\ bibliotek og udfør disse scripts i dit Oracle-databaseskema for at installere det.
- Hvis der er brug for understøttede objekter, så find i mappen \alexandria-plsql-utils-master\ og installer den.
- Du har installeret hjælpepakken og relaterede objekter. Opret nu et mappeobjekt i dit skema, som vist i nedenstående eksempel.
Opret ELLER erstat mappe zip_filer som 'c:\zip_files';
- Opret så nedenstående funktion i det samme skema for at konvertere en fil til en BLOB. Denne funktion vil blive brugt til at oprette en zip-fil ved hjælp af PL/SQL zip_util_pkg-pakken. Bemærk også, at før du opretter denne funktion ændre ZIP_FILES mappenavn med dit databasebiblioteksobjekt, som du oprettede ovenfor.
OPRET ELLER ERSTAT FUNKTION file_to_blob (p_file_name VARCHAR2)RETURN BLOBASdest_loc BLOB :=EMPTY_BLOB ();src_loc BFILE :=BFILENAME ('ZIP_FILES ', p_file_name);BEGINDBMS_LOB.OPEN (src_loc, DBMS_LOB.LOB_READONLY);DBMS_LOB.CREATETEMPORARY (lob_loc => dest_loc,cache => TRUE,dur => DBMS_LOB.session);DBMS_LOB.OPEN (DBMS_LOBLOB.OPEN (BMS_LOBLOB.OPEN);BMS_LOBLOB .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_to_loc;END fil;Test
Bemærk: I det følgende eksempel skal filen emp.dat eksistere i ZIP_FILES-biblioteket, vi oprettede ovenfor.
DECLAREl_file1 BLOB;l_zip BLOB;BEGIN/* emp.dat skal være i ZIP_FILES biblioteksplacering */l_file1 :=file_to_blob ('emp.dat ');zip_util_pkg.add_file (l_zip, 'emp.dat', l_file1);zip_util_pkg.finish_zip (l_zip);/* det vil oprette zip-filen med navnet plsql_1.zip i ZIP_FILES-mappen */zip_util_pkg.save_zip (l_zip, ' ZIP_FILES ', 'plsql_1.zip');END;/Du kan nu tjekke placeringen af ZIP_FILES-biblioteket for plsql_1.zip-filen.
Til at zippe flere filer
DECLAREl_file1 BLOB;l_file2 BLOB;l_zip BLOB;BEGINl_file1 :=file_to_blob ('emp.dat');l_file2 :=file_to_blob ('scott.sql');zip_util_pkg.add_file.edat_zip, 'empfile.dat_zip, 'empfile;zip_util_pkg.add_file (l_zip, 'scott.sql', l_file2);zip_util_pkg.finish_zip (l_zip);zip_util_pkg.save_zip (l_zip, 'ZIP_FILES ', 'plsql_3.zip');END;/Se også:
- Udpak en fil i PL/SQL
- Opret JSON-fil i Oracle 11g ved hjælp af PL/SQL
- Eksportér data fra Oracle SQL Developer til Excel
- Opret PDF-filer ved hjælp af PL/SQL