2010-12-10 19 views
7

अभी कुछ डेटा को संपीड़ित करने के लिए मैं ओरेकल उपयोगिता प्रक्रिया, UTL_COMPRESS.LZ_COMPRESS() का उपयोग कर रहा हूं। लेकिन समस्या यह है कि यह GZIP संगत प्रारूप का उपयोग कर चीज को संपीड़ित करता है, जो कि दुर्भाग्यवश ज़िप अनुकूल नहीं है। इसलिए, Windows XP देशी डिकंप्रेशन उपयोगिता इसे नहीं खोल सकती है (आप जानते हैं कि संकुचित फ़ोल्डर चीज़ी)। और उपयोगकर्ता को कुछ अन्य उपयोगिता का उपयोग करना है, जैसे कि 7Zip, Winzip, या Filzip आदि, ताकि इसे डिकंप्रेस किया जा सके।ओरेकल संग्रहीत प्रक्रिया का उपयोग करके ज़िप

तो, हम ओरेकल से GZIP डेटा पुन: प्राप्त की एक योजना होने अंत, जावा का उपयोग कर उसे असंपीड़ित, और ज़िप (कुछ है कि विंडोज उपयोगिता द्वारा decompressed जा सकता है) करने के लिए इसे वापस सेक। यह compress-in-gzip -> decompress -> compress-again-in-zip पर हास्यास्पद लगता है।

कोई भी विचार यह सब अतिरिक्त गणना से बचने के लिए, पहले स्थान पर वांछित प्रारूप में इसे कैसे संकुचित कर सकता है?

उत्तर

8

एक जावा पैकेज java.util.zip जो WinZip प्रारूप का समर्थन करता है। और ओरेकल में हम जावा संग्रहीत प्रक्रियाओं का निर्माण कर सकते हैं जो जावा वर्ग को एक रूप में प्रस्तुत करते हैं जिसे मूल पीएल/एसक्यूएल प्रोग्राम द्वारा बुलाया जा सकता है। Find out more

तो आपको जो करना है वह उस फ़ाइल को लिखना है जिसमें डेटा को असम्पीडित स्थिति में शामिल किया गया है और फिर उसे ज़िप करने के लिए जेएसपी के माध्यम से फ़ीड करें। यदि आप अपना खुद का कार्यान्वयन नहीं लिखना चाहते हैं तो this article by Vadim Loevski देखें। इसमें ओएस फाइलों को ज़िपित करने के लिए जावा संग्रहीत प्रक्रिया शामिल है।


नोट: इस संदर्भ JSP का मतलब जावा संग्रहित प्रक्रिया है, जो डेटाबेस में एम्बेडेड एक जावा प्रोग्राम है। यह जावा सर्वर पेजों जैसा नहीं है, जो एक वेब तकनीक है, और इसलिए जेएसपी संक्षिप्त नाम के लिए अधिक आम उपयोग है। दिए गए किसी भी भ्रम के लिए मैं क्षमा चाहता हूं।

+0

जेएसपी सवाल से बाहर है, क्योंकि डेटाबेस में सब कुछ है। मेरी पीएल/एसक्यूएल प्रक्रिया एक टेबल से असम्पीडित डेटा पुनर्प्राप्त कर रही है और संपीड़ित डेटा को दूसरी तालिका में लिख रही है। भंडारण लागत को बचाने के लिए अगले चरण में उन सभी असम्पीडित डेटा को हटा दिया गया। –

+0

मैं बिल्कुल यह सोच रहा था, मेरा मतलब जावा संग्रहीत प्रक्रिया के बारे में है। लेकिन मैंने पहले कभी एक उदाहरण नहीं किया है, जिसने मुझे संभावना के बारे में थोड़ा चिंतित कर दिया है। आपसे इसी तरह की बात सुनने के बाद, यह मुझे विश्वास दिलाता है। और अब एक बहुत ही सरल उदाहरण के साथ आने के बाद, मुझे लगता है कि यह जाने का रास्ता है। आपके इनपुट और मूल्यवान संसाधनों के लिंक के लिए बहुत बहुत धन्यवाद। +1 –

+0

यह आपके संपादन के बारे में है। "एनबी" का अर्थ है "नोटा बेने", अगर मैं फिर से गलत नहीं हूं? ;) –

3

UTL_RAW.CAST_TO_RAW संपीड़न एल्गोरिदम का कोई भी प्रकार नहीं है। कोई विचार नहीं कि आप इस विचार के साथ कहां आए थे कि यह था। रॉ (और इसके बड़े चचेरे भाई बीएलओबी) बस डेटा संग्रहित करने वाले थे जो संख्या, दिनांक या स्ट्रिंग नहीं है। आप स्ट्रिंग्स में बाइनरी डेटा स्टोर नहीं करना चाहते हैं क्योंकि चरित्र रूपांतरण समस्याओं का मौका है।

संपीड़न के लिए सही पीएल/एसक्यूएल पैकेज UTL_COMPRESS है जो मानक लेम्पल-ज़िव एल्गोरिदम का उपयोग करता है।

http://download.oracle.com/docs/cd/E11882_01/appdev.112/e16760/u_compr.htm#BGBBCDDI

+0

क्षमा करें यह एक गलत प्रतिलिपि/पेस्ट मुद्दा था। प्रश्न अपडेट किया गया।'UTL_COMPRESS' और आपके द्वारा प्रदान किया गया लिंक यह बता रहा है कि संपीड़ित डेटा GZIP संगत होगा। लेकिन मैं जो चाहता हूं वह मानक ज़िप चीज है। गलती को इंगित करने के लिए धन्यवाद। –

+0

इसे इंगित करने के लिए, आपको बहुत बहुत धन्यवाद। +1 –

+0

वह लिंक मर चुका है। – zygimantus

3

as_zip (blog post) ज़िप अभिलेखागार में हेरफेर करने के एक देशी PL/SQL पैकेज है।
यह 4 गीगाबाइट तक की फ़ाइलों को संभालता है (मूल ज़िप प्रारूप की सीमा जैसा दिखता है)।
पैकेज Anton Scheffer द्वारा लिखा गया है और एमआईटी-लाइसेंस प्राप्त है।

संबंधित मुद्दे