Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak spakować plik w PL/SQL?

W tym wpisie na blogu podaję przykład do ZIP pliku w PL/SQL. Do wykonania tego zadania używam biblioteki Alexandria PL/SQL Util. Tę samą bibliotekę wykorzystałem na przykładzie eksportu danych do Excela z tabeli Oracle Database. Wykonaj poniższe czynności, aby utworzyć plik ZIP przy użyciu PL/SQL w Oracle.

Utwórz plik ZIP w Oracle przy użyciu PL/SQL

  1. Najpierw pobierz bibliotekę Alexandria PL/SQL z Github, korzystając z następującego linku Pobierz.
  2. Po pobraniu pliku rozpakuj go i znajdź zip_util_pkg.pks i zip_util_pkg.pkb pliki w \alexandria-plsql-utils-master\ora\ katalogu i wykonaj te skrypty w schemacie bazy danych Oracle, aby go zainstalować.
  3. Jeśli potrzebne są jakieś obsługiwane obiekty, znajdź je w folderze \alexandria-plsql-utils-master\ i zainstaluj.
  4. Zainstalowałeś pakiet narzędzi i powiązane obiekty. Teraz utwórz obiekt katalogu w swoim schemacie, jak pokazano w poniższym przykładzie.
Create OR Replace Directory zip_files as 'c:\zip_files';
  1. Następnie utwórz poniższą funkcję w tym samym schemacie, aby przekonwertować plik na BLOB. Ta funkcja będzie używana do tworzenia pliku Zip przy użyciu pakietu PL/SQL zip_util_pkg. Pamiętaj też, że przed utworzeniem tej funkcji zmień ZIP_FILES nazwa katalogu z obiektem katalogu bazy danych, który utworzyłeś powyżej.
CREATE OR REPLACE FUNCTION file_to_blob (p_file_name VARCHAR2)
RETURN BLOB
AS
dest_loc BLOB := EMPTY_BLOB ();
src_loc BFILE := BFILENAME ('ZIP_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;
/

Test

Uwaga: W poniższym przykładzie plik emp.dat musi istnieć w katalogu ZIP_FILES, który utworzyliśmy powyżej.

DECLARE
l_file1 BLOB;
l_zip BLOB;
BEGIN

/* emp.dat should be in ZIP_FILES directory location */
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);

/* it will create the zip file named plsql_1.zip in the ZIP_FILES directory */

zip_util_pkg.save_zip (l_zip, 'ZIP_FILES', 'plsql_1.zip');
END;
/

Możesz teraz sprawdzić lokalizację katalogu ZIP_FILES dla pliku plsql_1.zip.

Do ZIP wielu plików

DECLARE
l_file1 BLOB;
l_file2 BLOB;
l_zip BLOB;
BEGIN
l_file1 := file_to_blob ('emp.dat');
l_file2 := file_to_blob ('scott.sql');

zip_util_pkg.add_file (l_zip, 'emp.dat', l_file1);
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;
/

Zobacz też:

  • Rozpakuj plik w PL/SQL
  • Utwórz plik JSON w Oracle 11g przy użyciu PL/SQL
  • Eksportuj dane z Oracle SQL Developer do Excela
  • Tworzenie plików PDF za pomocą PL/SQL
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Naprawienie błędu ORA-65096 podczas tworzenia testów automatycznych w Django przy użyciu Oracle

  2. Oracle:aktualizacje wielu tabel => ORA-01779:nie można modyfikować kolumny, która mapuje do tabeli niezachowanej kluczem

  3. Wywołanie funkcji przechowywanej (która zwraca tablicę typu zdefiniowanego przez użytkownika) w Oracle poprzez łącze do bazy danych

  4. Oracle GROUP_CONCAT() Odpowiednik

  5. Tworzenie bazy danych Oracle 12c – krok po kroku