मुझे एक ऐसा घटक लिखना है जो ओरेकल डेटाबेस में SQL सर्वर तालिकाओं (संरचना और डेटा) को फिर से बनाता है। इस घटक को ओरेकल डेटाबेस में नया डेटा भी दर्ज करना होगा और इसे वापस SQL सर्वर में कॉपी करना होगा।ओरेकल खाली स्ट्रिंग को शून्य होने पर मानता है जबकि SQL सर्वर नहीं करता - यह सबसे अच्छा कैसे संभाला जाता है?
एसक्यूएल सर्वर से ओरेकल तक डेटा प्रकारों का अनुवाद करना कोई समस्या नहीं है। हालांकि, ओरेकल और एसक्यूएल सर्वर के बीच एक महत्वपूर्ण अंतर एक प्रमुख सिरदर्द पैदा कर रहा है। SQL सर्वर NULL
मान से भिन्न होने के लिए एक खाली स्ट्रिंग ("") मानता है, इसलिए char
कॉलम को NOT NULL
के रूप में परिभाषित किया जा सकता है और फिर भी डेटा में रिक्त तार शामिल हैं।
ओरेकल एक खाली स्ट्रिंग एक NULL
मूल्य के रूप में ही मानते हैं, इसलिए यदि एक char
स्तंभ NOT NULL
के रूप में परिभाषित किया गया है, तो आप एक खाली स्ट्रिंग नहीं डाल सकते। यह मेरे घटक को तोड़ने का कारण बनता है जब भी NOT NULL
चार कॉलम में मूल SQL सर्वर डेटा में रिक्त स्ट्रिंग होती है।
अब तक मेरा समाधान किसी भी दर्पण ओरेकल तालिका परिभाषाओं में NOT NULL
का उपयोग नहीं करना है, लेकिन मुझे एक और मजबूत समाधान की आवश्यकता है। यह एक कोड समाधान होना चाहिए, इसलिए उत्तर "एसक्यूएल 2 ओरेकल उत्पाद का उपयोग नहीं कर सकता"।
आप इस समस्या को कैसे हल करेंगे?
संपादित करें: यहां एकमात्र समाधान है जो मैं अब तक आया हूं, और यह समस्या को स्पष्ट करने में मदद कर सकता है। चूंकि ओरेकल एक पूर्ण नल कॉलम में अनुमति नहीं देता है, इसलिए मेरा घटक SQL सर्वर से आने वाले किसी भी मान को रोक सकता है और इसे "@" (उदाहरण के लिए) के साथ प्रतिस्थापित कर सकता है।
जब मैं अपनी ओरेकल तालिका में एक नया रिकॉर्ड जोड़ता हूं, तो मेरे कोड को "@" लिखना पड़ता है यदि मैं वास्तव में एक "" डालना चाहता हूं, और जब मेरा कोड नई पंक्ति को SQL सर्वर पर वापस कॉपी करता है, तो उसे अवरोध करना पड़ता है "@" और इसके बजाय "" लिखें।
मुझे उम्मीद है कि एक और शानदार तरीका है।
संपादित करें 2: क्या यह संभव है कि एक आसान समाधान है, जैसे ओरेकल में कुछ सेटिंग जो इसे अन्य सभी प्रमुख डेटाबेस के समान रिक्त तारों के इलाज के लिए प्राप्त करती है? और यह सेटिंग ओरेकल लाइट में भी उपलब्ध होगी?
आपके संपादन 2 के संबंध में: इन सभी कॉलम के लिए एक सीएलओबी का उपयोग करने में एक भयानक समाधान है। ओरेकल न्यूल और खाली सीएलओबी के बीच अंतर करता है। प्रदर्शन प्रभाव को कम करने के लिए आप तालिका में सीएलओबी इनलाइन स्टोर कर सकते हैं। मैं यह नहीं करूँगा (नीचे मेरा वास्तविक जवाब देखें)। –
@WW .: आप पूरी तरह से सही हैं - यह एक भयानक समाधान है। – MusiGenesis
पवित्र गाय। एसक्यूएल सर्वर के पास मूर्खता का अपना हिस्सा है, लेकिन यह शुद्ध बकवास है। (क्या यह अभी भी 2014+ ओरेकल के साथ है, और इसके लिए एक "एएनएसआई न्यूल" सेटिंग जोड़ा गया है? एसक्यूएल सर्वर के पास इस तरह के कुछ "एएनएसआई न्यूल" हैंडलिंग जैसे कुछ मुद्दे थे।) – user2864740