मेरे पास डेटा की लगभग 100000 पंक्तियाँ हैं। अगर मैं इस डेटा को टेक्स्ट फाइल फॉर्मेट में स्टोर करता हूं, तो इसे एक्सेल फाइल फॉर्मेट में स्टोर करने से ज्यादा जगह मिलती है। ऐसा क्यों है?
मेरे पास डेटा की लगभग 100000 पंक्तियाँ हैं। अगर मैं इस डेटा को टेक्स्ट फाइल फॉर्मेट में स्टोर करता हूं, तो इसे एक्सेल फाइल फॉर्मेट में स्टोर करने से ज्यादा जगह मिलती है। ऐसा क्यों है?
जवाबों:
आधुनिक एक्सेल द्वारा उपयोग किया जाने वाला xlsx
प्रारूप वास्तव में एक संकुचित प्रारूप है। यह एक ज़िप संग्रह है जिसमें एक निश्चित संरचना में पाठ (XML) फ़ाइलें हैं।
यदि आप अपने सादे पाठ फ़ाइल को एक समान ज़िप संपीड़न उपकरण के साथ संपीड़ित करते हैं, तो आपको समान फ़ाइल आकार प्राप्त करना चाहिए।
इसके अतिरिक्त, जैसा कि टिप्पणियों में ब्रैडली उफ़नर और मॉर्गन ने उल्लेख किया है , एक्सेल समान तारों को काट देगा और केवल उनकी एक प्रति संग्रहीत करेगा। मुझे इस तरह की विधि के सटीक लाभों के बारे में निश्चित नहीं है, और यह आपके डेटा सेट पर निर्भर करेगा, लेकिन सरल ज़िप संपीड़न शायद आपको वहां सबसे अधिक मिलेगा। 1
9.1.3 शारीरिक पैकेज
प्रत्येक कार्यालय ओपन एक्सएमएल दस्तावेज़ को ज़िप संग्रह के रूप में लागू किया जाता है।
1 मेरा अनुमान है कि जब आप कई वर्कशीट करते हैं तो यह कटौती सबसे प्रभावी होती है, क्योंकि ज़िप कंप्रेशन प्रत्येक फाइल को आर्काइव में प्रत्येक फाइल पर स्वतंत्र रूप से लागू होता है और केवल एक समय में डेटा के सीमित वर्गों में - एक ही फाइल में एक साथ सभी स्ट्रिंग्स को संग्रहीत करके, बाद के संपीड़न के लिए कुछ लाभ होना चाहिए। अधिक व्यावहारिक रूप से, यदि आपका सादा पाठ प्रारूप किसी भी फ़ाइल में वैसे भी है तो शायद थोड़ा अंतर होगा।
.zip
) एक के साथ एक के साथ खेल सकते हैं । युक्ति भी उपलब्ध है, लेकिन यह सूखे पढ़ने के लिए बनाता है।
दिया गया उत्तर सही है, यह आपके डेटा को एक्सएमएल के रूप में संग्रहीत करने के कारण है। यह इस कारण से भी है, कि आपके डेटा को कुशलता से छाँटने से फ़ाइल का आकार भी कम हो जाएगा। इसे स्वयं परखें - मान लें कि आपके पास डेटा है
A B C
John Smith-Johnson-Williamson 12345
Sally Smith-Johnson-Williamson 67890
John Williams 34567
यदि आप केवल C (सभी या लगभग सभी विशिष्ट मानों वाला एक कॉलम) को छाँटते हैं, तो B के समरूप मान आसन्न नहीं होंगे। एक्सेल के xml में ऐसा दिखता है:
<12345><John><Smith-Johnson-Williamson>
<34567><John><Williams>
<67890><Sally><Smith-Johnson-Williamson>
यदि आप बी (सामान्य मूल्यों के साथ एक कॉलम) को क्रमबद्ध करते हैं, तो समान मूल्य आसन्न हैं। एक्सेल के xml में ऐसा दिखता है:
<Smith-Johnson-Williamson><John><12345>
<Sally><67890>
<Williams><John><34567>
क्योंकि वह लंबी स्ट्रिंग समान और आसन्न है, एक्सेल जानता है कि यह उन्हें एक साथ पैक कर सकता है, जब लोग सूची लिखते हैं, और उपरोक्त पंक्ति के कुछ भाग को दोहराने के लिए, वे एक ही चीज़ को फिर से लिखने के बजाय उद्धरण टाइप करते हैं। मुझे अपनी जांच में साझा-स्ट्रिंग शब्दकोश का कोई सबूत नहीं मिला - बस दोहराया क्षेत्र मूल्य के स्थान पर यह इंडेंटेशन।
मेरे पास केवल 11 राज्यों में 250,000 ग्राहकों की मेलिंग सूची थी, और प्रत्येक रिकॉर्ड पर एक क्षेत्र था जो उन्हें मिलने वाले प्रस्ताव की पहचान करने वाले दो तारों में से एक था। हमारे कर्मचारी किसी कारणवश लोगों को उनके सड़क के पते पर बात करते हुए देखने के आदी थे, इसलिए इसे सड़क नंबर कॉलम, फिर सड़क का नाम, शहर, इत्यादि पर सॉर्ट किया गया ... जब मैंने पहले प्रस्ताव का सहारा लिया, तब राज्य, ज़िप कोड, शहर, सड़क का नाम, सड़क संख्या और अंत में पता-पंक्ति -2, फ़ाइल का आकार अविश्वसनीय रूप से कम हो गया था। मैंने फ़ाइल पर अनपैक्ड एक्सएमएल की जांच की, जो चल रहा था, उसे देखने के लिए हर तरह से हल किया और ऊपर जो मैंने घटाया है। यदि 5 वर्णों से अधिक वाले कई फ़ील्ड हैं, लेकिन मान एक सीमित सेट के हैं (कहते हैं, 'रिज़ॉल्यूशन', 'अस्वीकृत', 'स्वीकृत', आदि जैसे टिकट डिस्पोज़),
यदि आपके पास 3.14159265359 जैसी संख्या है, तो आपको इसे टेक्स्ट फ़ाइल में संग्रहीत करने के लिए 13 बाइट्स की आवश्यकता है; यदि आप इस संख्या को फ्लोट के रूप में संग्रहीत करते हैं, तो आपको केवल 4 बाइट्स की आवश्यकता होगी।
xls
(BIFF) के मामले में हो सकता है , मुझे नहीं लगता xlsx
कि यह ऐसा करता है। xlsx
XML फ़ाइलों में सभी डेटा संग्रहीत करता है, जो अंकों के द्विआधारी एन्कोडिंग प्रदर्शन नहीं करते हैं - वे पाठ स्ट्रिंग के रूप में परिवर्तित और संग्रहीत होते हैं। मैं अभी भी विनिर्देश के संबंधित अनुभाग का शिकार करने की कोशिश कर रहा हूं, लेकिन मेरा अनुभवजन्य परीक्षण (यानी एक सहेजा गया दस्तावेज़ निकाल रहा है) दिखाता है कि 1.123
एक्सएमएल में 5 वर्ण स्ट्रिंग के रूप में संग्रहीत है।
c
(सेल) से पता चलता है कि कोशिकाएं v
टैग में अपना डेटा संग्रहीत करती हैं , जैसा कि ECMA-376-1: 2016v
में परिभाषित किया गया है, 18.3.1.96 (सेल वैल्यू) जहां वे कहते हैं कि इस तत्व के लिए संभावित मान ST_Xstring सरल प्रकार (.922.9.2.19) द्वारा परिभाषित किया गया है। - वे ऐसे उदाहरण प्रदान करते हैं, <v>28086.3541666667</v>
जहां डेटा को स्पष्ट रूप से एक स्ट्रिंग के रूप में संग्रहीत किया जाता है।
xlsb
, जो बहुत बड़ी चादरों के लिए अनुशंसित है