Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để ZIP một tệp trong PL / SQL?

Trong bài đăng trên blog này, tôi đang đưa ra một ví dụ để ZIP một tệp trong PL / SQL. Tôi đang sử dụng Thư viện Alexandria PL / SQL Util để thực hiện tác vụ này. Cùng một thư viện mà tôi đã sử dụng cho ví dụ xuất dữ liệu sang Excel từ bảng Cơ sở dữ liệu Oracle. Làm theo các bước sau để tạo tệp ZIP bằng PL / SQL trong Oracle.

Tạo tệp ZIP trong Oracle bằng PL / SQL

  1. Đầu tiên, hãy tải xuống thư viện Alexandria PL / SQL từ Github bằng cách sử dụng liên kết Tải xuống sau.
  2. Sau khi tải xuống tệp, hãy giải nén và tìm zip_util_pkg.pks và zip_util_pkg.pkb các tệp trong \ alexandria-plsql-utils-master \ ora \ và thực thi các tập lệnh này trong Lược đồ cơ sở dữ liệu Oracle của bạn để cài đặt nó.
  3. Nếu cần bất kỳ đối tượng được hỗ trợ nào, hãy tìm trong thư mục \ alexandria-plsql-utils-master \ và cài đặt nó.
  4. Bạn đã cài đặt gói tiện ích và các đối tượng liên quan. Bây giờ, hãy tạo một đối tượng thư mục trong lược đồ của bạn, như được hiển thị trong ví dụ dưới đây.
 Tạo HOẶC Thay thế Thư mục  zip_files  dưới dạng 'c:\ zip_files'; 
  1. Sau đó, tạo hàm dưới đây trong cùng một Lược đồ để chuyển đổi tệp thành BLOB. Hàm này sẽ được sử dụng để tạo tệp Zip bằng gói PL / SQL zip_util_pkg. Cũng xin lưu ý, trước khi tạo chức năng này, hãy thay đổi ZIP_FILES tên thư mục với đối tượng thư mục cơ sở dữ liệu của bạn mà bạn đã tạo ở trên.
 TẠO HOẶC THAY THẾ CHỨC NĂNG tệp_to_blob (p_file_name VARCHAR2) QUAY LẠI 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 (dest_loc, DBMS_LOB.LOB.OPEN (dest_loc, DBMS_LOB.LOB.OPEN) .LOADFROMFILE (dest_lob => dest_loc, src_lob => src_loc, số lượng => DBMS_LOB.getLength (src_loc)); DBMS_LOB.CLOSE (dest_loc); DBMS_LOB.CLOSE (src_loc); RETURN dest_loc; END tệp_to_preblob; / 
 

Kiểm tra

Lưu ý: Trong ví dụ sau, tệp emp.dat phải tồn tại trong thư mục ZIP_FILES mà chúng tôi đã tạo ở trên.

 DECLAREl_file1 BLOB; l_zip BLOB; BEGIN / * emp.dat phải ở vị trí thư mục 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); / * nó sẽ tạo tệp zip có tên plsql_1.zip trong thư mục ZIP_FILES * / zip_util_pkg.save_zip (l_util_pkg.save_zip,'  ZIP_FILES  ',' plsql_1.zip '); HẾT; / 

Bây giờ bạn có thể kiểm tra vị trí của thư mục ZIP_FILES cho tệp plsql_1.zip.

Để ZIP nhiều tệp

 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 (l_zip, 'empfile.dat'; 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 '); HẾT; / 

Xem thêm:

  • Giải nén tệp trong PL / SQL
  • Tạo tệp JSON trong Oracle 11g bằng PL / SQL
  • Xuất dữ liệu từ Oracle SQL Developer sang Excel
  • Tạo tệp PDF bằng 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. Truy vấn hữu ích về việc hết hạn mật khẩu / Chính sách / Cài đặt của oracle EBS

  2. Nhận số lượng tất cả các bảng trong một giản đồ

  3. Làm cách nào để chuyển các đối số tới một tập lệnh PL / SQL trên dòng lệnh với SQLPLUS?

  4. Phương pháp thu thập:Hàm COUNT trong cơ sở dữ liệu Oracle

  5. Oracle RAC trên đám mây của bên thứ ba