Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

APEX_ZIP उदाहरण

Oracle 12c के बाद, जिस पर Oracle एपेक्स डिफ़ॉल्ट रूप से स्थापित है, आप APEX_ZIP का उपयोग कर सकते हैं फ़ाइलों को ज़िप करने के लिए PL/SQL पैकेज। तो यहाँ मैं कुछ Oracle APEX_ZIP दे रहा हूँ उदाहरण:

Oracle APEX_ZIP उदाहरण

निम्नलिखित पीएल/एसक्यूएल कोड फाइलें प्राप्त करता है (BLOB ) एक टेबल से और उसे ज़िप करें, और आपको एक अंतिम BLOB . देता है जिसमें आपके द्वारा जोड़ी गई सभी फाइलें हैं।

declare
   b_zip_file blob;

   cursor c_files
    is
    select file_name,
    file_content
    from emp_files
       where empno = 7894;

begin
   for c in c_files 
   loop
      -- adds the each blob to b_zip_file blob one by one
      apex_zip.add_file (
      p_zipped_blob => b_zip_file,
      p_file_name => c.file_name,
      p_content => c.file_content );
   end loop;

   -- finalizes the blob
   apex_zip.finish (
     p_zipped_blob => b_zip_file );

end;

ऊपर दिए गए कोड में आप देख सकते हैं कि आखिर में आपको फाइनल BLOB मिलेगा जिसे आप आगे टेबल में स्टोर कर सकते हैं या किसी प्रक्रिया में भेज सकते हैं या सर्वर पर फाइल लिख सकते हैं।

निम्नलिखित उदाहरण उपरोक्त कोड के अतिरिक्त है। फ़ाइलों को ज़िप करने के बाद, यह ज़िप फ़ाइल को सर्वर पर लिख देगा।

APEX_ZIP पैकेज का उपयोग कर ज़िप फ़ाइलें और सर्वर पर लिखें

सर्वर पर फ़ाइल लिखने के लिए, आपको Oracle निर्देशिका ऑब्जेक्ट की आवश्यकता है। नीचे एक उदाहरण दिया गया है, कि Oracle में एक निर्देशिका वस्तु को सर्वर पर एक निर्देशिका की ओर इशारा करते हुए कैसे बनाया जाए।

Create or Replace directory my_dir as '/your/server/path';

निर्देशिका बनाने के बाद, आप ज़िप फ़ाइल लिख सकते हैं जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है:

declare
   b_zip_file blob;

   -- variables for writing the files
   l_file       UTL_FILE.file_type;
   l_buffer     RAW (32767);
   l_amount     BINARY_INTEGER := 32767;
   l_pos        INTEGER := 1;
   l_blob_len   INTEGER;
   -- end variable declaration for file
   cursor c_files
    is
    select file_name,
    file_content
    from emp_files
       where empno = 7894;
begin
   for c in c_files 
   loop
      -- adds the each blob to b_zip_file blob one by one
      apex_zip.add_file (
      p_zipped_blob => b_zip_file,
      p_file_name => c.file_name,
      p_content => c.file_content );
   end loop;

   -- finalizes the blob
   apex_zip.finish (
     p_zipped_blob => b_zip_file );
   
   -- write the file
   l_blob_len := DBMS_LOB.getlength (b_zip_file);

   l_file :=
      UTL_FILE.fopen ('MY_DIR',
                     'my_zip.zip',
                      'WB',
                      32767);

   WHILE l_pos < l_blob_len
   LOOP

      DBMS_LOB.read (b_zip_file,
                     l_amount,
                     l_pos,
                     l_buffer);
      UTL_FILE.put_raw (l_file, l_buffer, TRUE);
      l_pos := l_pos + l_amount;
   END LOOP;

   UTL_FILE.fclose (l_file);
end;

ऊपर दिए गए PL/SQL कोड को चलाने के बाद, आपको my_zip.zip फाइल मिलेगी MY_DIR . पर सर्वर पर निर्देशिका स्थान।

संबंधित ट्यूटोरियल:

  • पीएल/एसक्यूएल में फाइल से बीएलओबी कैसे प्राप्त करें?
  • पीएल/एसक्यूएल में किसी फाइल को अनजिप कैसे करें?

संदर्भ:

  • APEX_ZIP Oracle मैन्युअल

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं Oracle में शीर्ष 1 कैसे करूँ?

  2. तालिका से रिकॉर्ड्स को हटाने के लिए PL/SQL प्रोग्राम

  3. 1 से अधिक कॉलम पर बी-ट्री इंडेक्स कैसा दिखता है?

  4. Oracle VM Virtual Box के साथ एक वर्चुअल मशीन बनाना

  5. cx_Oracle के साथ तालिका नाम के लिए बाध्यकारी चर