मेरे पास एक एक्सएमएल फ़ाइल है जो डेटाबेस (ओरेकल 11 जी यूनिकोड) तालिका के निर्यात से होती है। इस तालिका में एक बीएलओबी फ़ील्ड है जो एक फ़ाइल का प्रतिनिधित्व करता है। फ़ाइल बहुत बड़ी हो सकती है।बाइट ऐरे में बहुत बड़ी स्ट्रिंग
तो ऐसे मामले में जहां मेरे पास XML में एक बहुत बड़ी फ़ाइल है, उस फ़ाइल का एक बहुत बड़ा स्ट्रिंग प्रस्तुतीकरण।
मुझे किसी अन्य डेटाबेस उदाहरण में फ़ाइल डालने के लिए इस स्ट्रिंग के बाइट प्राप्त करना होगा।
इस बिंदु पर एक्सएमएल चार्ज किया गया है और मेरे पास फ़ाइल का प्रतिनिधित्व करने वाली एक स्ट्रिंग है।
Encoding.Unicode.GetBytes(stringFileRepresentation);
लेकिन मैं एक OutOfMemoryException
हो रही है:
यह क्या मेरे द्वारा की गई है।
अगर मैं ऐसा करते हैं:
Encoding.Unicode.GetBytes(stringFileRepresentation.ToCharArray());
मैं भी एक OutOfMemoryException
मिलता है।
मैं भी कोशिश की स्ट्रिंग डिकोडिंग से पहले यह करने के लिए:
var chars = stringFileRepresentation.ToCharArray();
Encoding.Unicode.GetBytes(chars);
और जब ToCharArray()
बुला रहा OutOfMemoryException
रही।
तो मुझे लगता है कि प्रसंस्करण स्ट्रिंग है।
तो मैं निम्न विधि है कि मैं here घटना पाया अगर मुझे यकीन है कि मैं स्ट्रिंग की एन्कोडिंग conservate करने के लिए है नहीं कर रहा हूँ कोशिश कर रहा हूँ:
byte[] bytes = new byte[str.Length * sizeof(char)];
Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
लेकिन मैं instantiating में भी एक OutOfMemoryException
हो रही है bytes
चर।
अब, मैं OutOfOptions
चला गया और मुझे नहीं पता कि क्या करना है।
बाइट सरणी प्राप्त करने के बाद डेटाबेस में ब्लॉब कैसे लिखेंगे? क्या कोई स्ट्रीमिंग विकल्प है? (आदर्श रूप से, आपको स्ट्रिंग के रूप में भी पूरी फ़ाइल को स्मृति में रखने की आवश्यकता नहीं है ...) –
वैकल्पिक रूप से दो डेटाबेस को एक-दूसरे से बात करने के लिए एक तरीका तैयार करें। – samjudson
मैंने ओडीपी.NET को देखना शुरू कर दिया और मुझे स्ट्रीमिंग विकल्प नहीं दिखाई देता। ऐसा लगता है कि आपको इसे अपने आप में भाग में तोड़ने की ज़रूरत होगी और बस डेटाबेस में फ़ील्ड को जोड़ना होगा। हो सकता है कि एक एसपीआरओसी लिखें जो बाइट्स को वर्तमान फ़ील्ड में जोड़ देगा और लूप इसे सम्मिलित करने के लिए कॉल कर देगा जब तक कि आपने ऑब्जेक्ट – Wjdavis5