2009-05-05 12 views
5

में एक से कई टेबल माइग्रेशन के हिस्से के रूप में हार्ड कोडित मानों को मैप करने के लिए एसएसआईएस का उपयोग करना SQL सर्वर 2005 और विजुअल स्टूडियो 2005 का उपयोग करके, मैं 1 तालिका से डेटा को कई में मर्ज करने के लिए एक एसएसआईएस पैकेज बनाने की कोशिश कर रहा हूं अन्य टेबलएसएसआईएस का उपयोग विजुअल स्टूडियो

स्रोत तालिका में कई फ़ील्ड नहीं हैं जो गंतव्य तालिकाएं करते हैं। उदाहरण के लिए 'बनाया गया' और 'निर्मितडेट' फ़ील्ड। मैं पैकेज आयात प्रक्रिया के हिस्से के रूप में इन्हें कड़ी मेहनत (एक अर्थ में) करना चाहता हूं।

समस्या यह नहीं जानती कि इस मैपिंग को सुविधाजनक बनाने के लिए क्या उपयोग करना है। शुरुआती बिंदु के रूप में यह क्रमशः निर्मित और निर्मितडेट के लिए हार्ड कोड '1' और गेटडेट() के लिए स्वीकार्य होगा।

"गंतव्य के लिए उन्नत संपादक" विकल्प संवाद पर "इनपुट और आउटपुट गुण" या "कॉलम मैपिंग" टैब पर GetDate() जैसे "डिफ़ॉल्ट" मानों को मैप करने के लिए कोई स्पष्ट समर्थन नहीं है।

इस बारे में कोई सुझाव कैसे प्राप्त करें?

+0

मैं स्रोत तालिकाओं से डेटा प्राप्त करने के लिए SQL लिखता हूं। मेरे स्रोत एसक्यूएल में, मैं सभी लापता कॉलम निर्दिष्ट करता हूं ताकि वे मेल खाते हों। मैं यह नहीं कह सकता कि यह कार्य पूरा करने का सबसे प्रभावी तरीका है, लेकिन ऐसा लगता है कि यह मेरे लिए काम करता है। – JJO

उत्तर

8

एसएसआईएस तरीका नए कॉलम (स्थिर मूल्यों के साथ या नहीं) बनाने के लिए स्रोत और गंतव्य के बीच, आपके डेटाफ्लो में "व्युत्पन्न कॉलम" परिवर्तन का उपयोग करना है।

यह आपको अभिव्यक्ति का उपयोग करके अतिरिक्त कॉलम और उनके मान निर्दिष्ट करने में सक्षम बनाता है। वर्तमान दिनांक/समय के लिए, अभिव्यक्ति के रूप में Getdate() का उपयोग करें और डेटाटाइप को "दिनांक (DT_DATE)" पर सेट करें। एक कोड को हार्ड कोड करने के लिए, अभिव्यक्ति में इसे दोहराएं (उदा। "1") और प्रासंगिक डेटा प्रकार निर्दिष्ट करें।

+1

ग्रेट, धन्यवाद एक आकर्षण काम किया। –

+2

नोट: गैर-व्युत्पन्न कॉलम सीधे "व्युत्पन्न कॉलम" परिवर्तन ब्लॉक के माध्यम से सीधे पास हो जाएंगे, यानी आपके स्रोत से आपके गंतव्य में। (एसक्यूएल एसक्यूएल सर्वर 2008 के भीतर)। अच्छे सुझाव के लिए – ryan

3

स्रोत के रूप में तालिका का उपयोग करने के बजाय, विशेष रूप से क्वेरी निर्दिष्ट करने के बारे में कैसे? इस तरह, आप स्रोत के हिस्से के रूप में मूल्यों को स्थैतिक रूप से परिभाषित कर सकते हैं।

उदा।

SELECT id, fieldOne, fieldTwo, '1' AS createdBy, GetDate() AS createdDate 
FROM SourceTable 

मैंने हाल ही में यह सटीक चीज़ की है।

याद रखने की एक महत्वपूर्ण बात यह है कि आपको यह सुनिश्चित करना होगा कि आपके डेटाटाइप मिलान करें। मुझे स्ट्रिंग डेटा प्रकारों से मेल खाने वाली कुछ समस्याएं थीं (यूटीएफ -8 और इसी तरह)।

+0

+1, लेकिन यह केवल तभी काम करता है जब आप स्रोत के रूप में क्वेरी को परिभाषित कर रहे हैं और स्रोत एक 'SQL' स्रोत है। यदि आप ओएलई डीबी स्रोत में 'डेटा एक्सेस मोड' के रूप में 'टेबल एक्सेस' को परिभाषित करते हैं, तो आप ऐसा नहीं कर सकते हैं, उदाहरण के लिए, यदि आप एक ऐसा दृश्य है जिसे आप संशोधित करने में सक्षम हैं तो निश्चित रूप से आप अपने तकनीकी का उपयोग कर सकते हैं आप FlatFile जैसे फ़ाइल स्रोत के लिए ऐसा नहीं कर सकते हैं। – rohancragg

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