В тази публикация в блога давам пример за ZIP файл в PL/SQL. Използвам Alexandria PL/SQL Util Library за изпълнение на тази задача. Същата библиотека, която използвах за примера за експортиране на данни в Excel от таблицата на базата данни на Oracle. Следвайте тези стъпки, за да създадете ZIP файл с помощта на PL/SQL в Oracle.
Създайте ZIP файл в Oracle с помощта на PL/SQL
- Първо, изтеглете библиотеката на Alexandria PL/SQL от Github, като използвате следната връзка Изтегляне.
- След като изтеглите файла, извлечете го и намерете zip_util_pkg.pks и zip_util_pkg.pkb файлове в \alexandria-plsql-utils-master\ora\ директория и изпълнете тези скриптове във вашата Oracle Database Schema, за да я инсталирате.
- Ако са необходими поддържани обекти, намерете в папката \alexandria-plsql-utils-master\ и я инсталирайте.
- Инсталирали сте помощния пакет и свързаните с него обекти. Сега създайте обект на директория във вашата схема, както е показано в примера по-долу.
Създайте ИЛИ Заменете директория zip_files като 'c:\zip_files';
- След това създайте по-долу функция в същата схема, за да конвертирате файл в BLOB. Тази функция ще се използва за създаване на Zip файл с помощта на пакет PL/SQL zip_util_pkg. Отбележете също, че преди да създадете тази функция променете ZIP_FILES име на директория с обекта на директорията на вашата база данни, който сте създали по-горе.
СЪЗДАДЕТЕ ИЛИ ЗАМЕНЕТЕ FUNCTION file_to_blob (p_file_name VARCHAR2)ВЪРНЕТЕ 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); .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; файл__>ТестЗабележка: В следващия пример файлът emp.dat трябва да съществува в директорията ZIP_FILES, която създадохме по-горе.
DECLAREl_file1 BLOB;l_zip BLOB;BEGIN/* emp.dat трябва да е в местоположение на директорията ZIP_FILES */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);/* ще създаде zip файла с име plsql_1.zip в директорията ZIP_FILES */zip_util_pkg. ZIP_FILES ', 'plsql_1.zip');END;/Вече можете да проверите местоположението на директорията ZIP_FILES за файла plsql_1.zip.
Към архивиране на няколко файла
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,elf_dat_file'l.;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;/Вижте също:
- Разархивирайте файл в PL/SQL
- Създайте JSON файл в Oracle 11g с помощта на PL/SQL
- Експортиране на данни от Oracle SQL Developer в Excel
- Създавайте PDF файлове с помощта на PL/SQL