sql >> Database >  >> RDS >> Oracle

Hoe een bestand zippen in PL/SQL?

In deze blogpost geef ik een voorbeeld om een ​​bestand in PL/SQL te ZIPpen. Ik gebruik Alexandria PL/SQL Util Library om deze taak uit te voeren. Dezelfde bibliotheek die ik heb gebruikt voor het voorbeeld van exportgegevens naar Excel vanuit de Oracle Database-tabel. Volg deze stappen om een ​​ZIP-bestand te maken met PL/SQL in Oracle.

Maak een ZIP-bestand in Oracle met PL/SQL

  1. Download eerst de Alexandria PL/SQL-bibliotheek van de Github via de volgende link Downloaden.
  2. Na het downloaden van het bestand, pak het uit en zoek de zip_util_pkg.pks en zip_util_pkg.pkb bestanden in de \alexandria-plsql-utils-master\ora\ directory en voer deze scripts uit in uw Oracle Database Schema om het te installeren.
  3. Als er ondersteunde objecten nodig zijn, zoek dan in de map \alexandria-plsql-utils-master\ en installeer deze.
  4. U hebt het hulpprogrammapakket en gerelateerde objecten geïnstalleerd. Maak nu een directory-object in uw schema, zoals in onderstaand voorbeeld.
Maak OF vervang directory zip_files als 'c:\zip_files';
  1. Maak vervolgens onderstaande functie in hetzelfde schema om een ​​bestand naar een BLOB te converteren. Deze functie wordt gebruikt om een ​​Zip-bestand te maken met het PL/SQL zip_util_pkg-pakket. Let ook op, dat voor het maken van deze functie de ZIP_FILES wijzigen directorynaam met uw databasedirectory-object dat u hierboven hebt gemaakt.
FUNCTIE MAKEN OF VERVANGEN 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.BLOMS_LOB.OPEN (dest_LOB.BLOMS_LOB.OPEN (dest_LOB,DLOB), .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_blo 

Test

Opmerking: In het volgende voorbeeld moet het bestand emp.dat voorkomen in de ZIP_FILES-map die we hierboven hebben gemaakt.

DECLAREl_file1 BLOB;l_zip BLOB;BEGIN/* emp.dat moet in de ZIP_FILES directorylocatie staan ​​*/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);/* het maakt het zip-bestand met de naam plsql_1.zip in de ZIP_FILES directory */zip_util_pkg.save_zip (l_zip_util_pkg.save_zip (l_zip_util_pkg.save_zip) ZIP_FILES ', 'plsql_1.zip');END;/

U kunt nu de locatie van de ZIP_FILES-map voor het plsql_1.zip-bestand controleren.

Meerdere bestanden zippen

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 (lfile_zip', 'emp_zip', 'emp_zip';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;/

Zie ook:

  • Een bestand uitpakken in PL/SQL
  • JSON-bestand maken in Oracle 11g met PL/SQL
  • Gegevens exporteren van Oracle SQL Developer naar Excel
  • PDF-bestanden maken met PL/SQL
  1. Milliseconde resolutie van DateTime in Ruby

  2. TSQL-e-mailvalidatie (zonder regex)

  3. UPDATE met ORDER BY

  4. Algemene fout:OS-versie komt niet overeen