sql >> Databasteknik >  >> RDS >> Oracle

Hur zippar man en fil i PL/SQL?

I det här blogginlägget ger jag ett exempel på att ZIP en fil i PL/SQL. Jag använder Alexandria PL/SQL Util Library för att utföra den här uppgiften. Samma bibliotek som jag använde för exemplet med export av data till Excel från Oracle Database-tabell. Följ dessa steg för att skapa en ZIP-fil med PL/SQL i Oracle.

Skapa en ZIP-fil i Oracle med PL/SQL

  1. Hämta först Alexandria PL/SQL-biblioteket från Github med hjälp av följande länk Ladda ner.
  2. När du har laddat ner filen, extrahera den och leta upp zip_util_pkg.pks och zip_util_pkg.pkb filer i \alexandria-plsql-utils-master\ora\ katalogen och kör dessa skript i ditt Oracle Database Schema för att installera det.
  3. Om några objekt som stöds behövs, leta reda på mappen \alexandria-plsql-utils-master\ och installera den.
  4. Du har installerat verktygspaketet och relaterade objekt. Skapa nu ett katalogobjekt i ditt schema, som visas i exemplet nedan.
Skapa ELLER ersätt katalog zip_filer som 'c:\zip_files';
  1. Skapa sedan nedanstående funktion i samma schema för att konvertera en fil till en BLOB. Den här funktionen kommer att användas för att skapa en zip-fil med paketet PL/SQL zip_util_pkg. Observera även att innan du skapar den här funktionen ändra ZIP_FILES katalognamn med ditt databaskatalogobjekt som du skapade ovan.
SKAPA ELLER ERSÄTT 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 (dest_DBREADMSLOB.OPEN);BMS_LOBLOBITE); .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; 

Testa

Obs! I följande exempel måste filen emp.dat finnas i ZIP_FILES-katalogen vi skapade ovan.

DECLAREl_file1 BLOB;l_zip BLOB;BEGIN/* emp.dat bör finnas i ZIP_FILES katalogplats */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 kommer att skapa zip-filen med namnet plsql_1.zip i ZIP_FILES-katalogen */zip_util_pkg.save_zip (l_zip, ' ZIP_FILES ', 'plsql_1.zip');END;/

Du kan nu kontrollera platsen för ZIP_FILES-katalogen för plsql_1.zip-filen.

Till zippa flera 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 även:

  • Uppacka en fil i PL/SQL
  • Skapa JSON-fil i Oracle 11g med PL/SQL
  • Exportera data från Oracle SQL Developer till Excel
  • Skapa PDF-filer med PL/SQL
  1. Hur frågar jag efter alla datum som är större än ett visst datum i SQL Server?

  2. SQL Server Express Backup Database | Så här schemalägger du automatisera och rensa SQL Express-säkerhetskopia

  3. Vilka är några sätt att komma åt Microsoft SQL Server från Linux?

  4. Hur man ersätter MySQL med Percona på Plesk CentOS 7