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 मैन्युअल