यह पता चला है कि SSIS Script Component जीता' t टेक्स्ट स्ट्रीम आउटपुट की अनुमति दें मेरे पास उत्तर था, लेकिन मुझे यह पता लगाना था कि उत्तर में फ़ील्ड का क्या अर्थ है।
मैं सभी भागों को समझाता हूँ, इसलिए यह स्पष्ट है कि क्या हो रहा है।
स्क्रिप्ट कंपोनेंट में आउटपुट 0 नामक आउटपुट होता है, जिसमें आउटपुट कॉलम फोरकास्टएक्सएमएल होता है। अंतिम को छोड़कर वे डिफ़ॉल्ट नाम हैं। पूर्वानुमानएक्सएमएल में टेक्स्ट स्ट्रीम का डेटा प्रकार है [DT_TEXT]
स्क्रिप्ट में ही, मेरे पास फोरकास्टएक्सएमएल नामक एक स्ट्रिंग है (हाँ, वही नाम, जो इसे भ्रमित करता है।)
डेटा के साथ स्ट्रिंग फोरकास्टएक्सएमएल भरने के बाद, मैं इसे निम्नलिखित पंक्तियों के साथ Output0Buffer को असाइन कर सकता हूं:
String forecastXML = oResult.XmlResult;
Output0Buffer.AddRow();
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(forecastXML));
पहली पंक्ति सभी डेटा प्रकारों के लिए काम करती है। क्योंकि मैं एक NTEXT को लिख रहा हूं, एक सीधी असाइनमेंट के बजाय दूसरी लाइन की जरूरत है। Output0Buffer.forecastXML मेरे आउटपुट 0 में परिभाषित NText डेटा प्रकार को संदर्भित करता है। आखिरी वाला कोड से मेरा स्ट्रिंग है।
अधिक स्पष्ट होने के लिए, एक स्ट्रिंग बनाने के बजाय, मेरे पास होना चाहिए
Output0Buffer.forecastXML.AddBlobData(System.Text.Encoding.UTF8.GetBytes(oResult.XmlResult));
जहां oResut.XmlResult मेरे कॉल का परिणाम है जो एक्सएमएल प्राप्त करता है। इसे एक स्ट्रिंग में असाइन करना एक अतिरिक्त, अनावश्यक कदम है।
यह ओरेकल सीएलओबी में जा रहा है, इसलिए अगला कदम उस आउटपुट को व्युत्पन्न कॉलम पर ले जाना है और मेरे आउटपुट फोरकास्टएक्सएमएल को (डीटी_एनटीईएक्सटी) फोरकास्टएक्सएमएल के रूप में डालना है। (मुझे संदेह है कि मैं कुछ प्रकार के अनावश्यक परिवर्तन कर रहा हूँ।)
और फिर, मैं अपने OLE DB गंतव्य में उस फ़ील्ड को अपने CLOB फ़ील्ड में मैप करता हूँ।