Database
 sql >> डेटाबेस >  >> RDS >> Database

एसएसआईएस में वृद्धिशील भार

लोग और भी जल्दी में हैं। वे अपना डेटा लगभग अभी चाहते हैं। और इससे भी अधिक, डेटा बड़ा और बड़ा होता जा रहा है। इसलिए, आप अच्छी पुरानी तकनीकों का उपयोग नहीं कर सकते क्योंकि वे "काफी अच्छी" हैं। यह तेज़ होना है। और ईटीएल कदम छूट नहीं हैं। यह वह जगह है जहाँ वृद्धिशील भार खेलने के लिए आता है। और अगर आप इस पेज पर हैं, तो आप शायद SSIS में इंक्रीमेंटल लोड की तलाश कर रहे हैं।

और इस लेख में हमारा ध्यान यही है। हम एसएसआईएस चरण-दर-चरण में वृद्धिशील डेटा लोड की व्याख्या करने के लिए तुलना और उदाहरण करने जा रहे हैं। और निश्चिंत रहें कि यह पता लगाने से आपका सिर नहीं फटेगा।

यहां आपके लिए क्या रखा गया है:

  • ईटीएल में पूर्ण भार और वृद्धिशील भार क्या हैं?
  • एसएसआईएस में वृद्धिशील डेटा लोड क्या है?
  • एसएसआईएस में पूर्ण भार और वृद्धिशील भार के बीच अंतर
  • सीडीसी या चेंज डेटा कैप्चर का उपयोग करके एसएसआईएस में इंक्रीमेंटल लोड
  • डेटटाइम कॉलम का उपयोग करके SSIS में इंक्रीमेंटल लोड
  • लुकअप का उपयोग करके SSIS में इंक्रीमेंटल लोड कैसे करें
  • एसएसआईएस डेटा लोड करने का सबसे अच्छा टूल

प्रत्येक अनुभाग में उपखंड होंगे। आप लिंक पर क्लिक करके अपनी जरूरत के विषय पर जा सकते हैं।

उदाहरणों के साथ शुरू करने से पहले, आइए इसके विपरीत, पूर्ण भार के साथ वृद्धिशील भार की तुलना करें।

ईटीएल में फुल लोड और इंक्रीमेंटल लोड क्या हैं

कोई फर्क नहीं पड़ता कि आप किस ईटीएल उपकरण का उपयोग करते हैं, पूर्ण और वृद्धिशील भार का एक ही अर्थ है। आइए नीचे उनका वर्णन करें।

ईटीएल में पूरा लोड

जैसा कि नाम से पता चलता है, ईटीएल में फुल लोड स्रोत से गंतव्य तक सभी डेटा लोड कर रहा है। स्रोत से सब कुछ लोड करने से पहले लक्ष्य तालिका को छोटा कर दिया जाता है। इसलिए इस तकनीक को विनाशकारी भार . के नाम से भी जाना जाता है . इस तकनीक को करना भी आसान है। और यह उच्चतम डेटा अखंडता भी सुनिश्चित करता है। लेकिन आज आपके डेटा का आकार कल से बड़ा है। इसलिए, यदि आप लगातार बढ़ते डेटा पर इसका उपयोग करते हैं, तो समय के साथ प्रक्रिया धीमी हो जाएगी।

ETL फुल लोड यूज केस

  • स्रोत डेटा का आकार छोटा है और आने वाले कई वर्षों में इसमें उल्लेखनीय वृद्धि नहीं होगी। उदाहरणों में रंगों की सूची, कुछ श्रेणियां/वर्गीकरण, देशों और शहरों की सूची, और बहुत कुछ शामिल हैं।
  • यह कहना मुश्किल है कि कौन सा नया है या स्रोत में बदल गया है।
  • स्रोत से गंतव्य तक डेटा बिल्कुल एक जैसा होना चाहिए
  • डेटा का इतिहास अप्रासंगिक है और इसे अधिक बार लिखा जाता है

ETL में इंक्रीमेंटल लोड

इस बीच, इंक्रीमेंटल लोड जैसा कि नाम से भी पता चलता है। केवल परिवर्तित किया गया डेटा स्रोत से गंतव्य तक लोड किया जाएगा। यह समय के साथ क्रमिक रूप से किया जाता है। जो नहीं बदले वो वैसे ही रहेंगे। ऐसा करना थोड़ा मुश्किल है। आपको यह सुनिश्चित करने की आवश्यकता है कि सभी परिवर्तन एकत्र किए गए हैं और गंतव्य पर लोड किए गए हैं। लेकिन यह बहुत बड़े डेटा पर पूर्ण लोड से अधिक तेज़ होगा।

ETL इंक्रीमेंटल लोड यूज़ केस

  • डेटा का आकार बहुत बड़ा है और बड़े परिणाम सेट के लिए क्वेरी करना बहुत धीमा होगा
  • परिवर्तन क्वेरी करना आसान है
  • हटाए गए डेटा को ऑडिट सिस्टम की तरह गंतव्य में बनाए रखने की आवश्यकता है

एसएसआईएस में इंक्रीमेंटल लोड क्या है

SSIS में वृद्धिशील भार के मूल घटक चित्र 1 में दिखाए गए हैं।

आपकी आवश्यकताओं के आधार पर एसएसआईएस में वृद्धिशील लोडिंग अधिक जटिल हो जाती है। लेकिन चित्र 1 में सरल "रेसिपी कार्ड" में वह शामिल है जो आपको वेतन वृद्धि में डेटा "पकाने" के लिए चाहिए। डेटा में परिवर्तनों को पकड़ना चुनौतीपूर्ण हिस्सा है। यदि आप सावधान नहीं हैं तो आप गंतव्य को खराब कर सकते हैं।

आगे के अनुभागों में, आप उदाहरण के साथ एसएसआईएस में इंक्रीमेंटल लोड करना सीखेंगे। इनमें चेंजडाटा कैप्चर (सीडीसी), डेटटाइम कॉलम और लुकअप का उपयोग करना शामिल है। आप यह भी देखेंगे कि यह कैसे Devart SSIS घटकों का उपयोग करके किया जाता है।

आइए अगले भाग में वृद्धिशील लोड की तुलना SSIS में पूर्ण लोड से करें।

एसएसआईएस में फुल लोड और इंक्रीमेंटल लोड के बीच अंतर

आप पहले ही देख चुके हैं कि एसएसआईएस (चित्र 1) में वृद्धिशील भार कैसा दिखता है। इस बीच, यह नीचे चित्र 2 में एसएसआईएस पूर्ण भार के साथ कैसे जाता है।

एसएसआईएस में फुल लोड और इंक्रीमेंटल लोड के बीच का अंतर पैकेज डिजाइन में है। एक पूर्ण लोड डिज़ाइन को एसएसआईएस पैकेज में खींचे गए कम घटकों की आवश्यकता होती है। यह इतना आसान है कि इसमें छोटी-छोटी बातें शामिल हैं। यही कारण है कि उत्पादकता की झूठी भावना के कारण, कुछ डेवलपर्स ज्यादातर समय इस तकनीक का सहारा लेते हैं।

लेकिन हर रात एक पूर्ण लोड डिज़ाइन पैकेज चलाना बड़े डेटा के लिए उचित नहीं है, जैसे कि 15टीबी। क्या आपको लगता है कि उपयोगकर्ताओं के सुबह आने से पहले यह समय पर समाप्त हो जाएगा? ऐसा नहीं होगा क्योंकि आप उन रिकॉर्ड्स को फिर से सम्मिलित करने का प्रयास कर रहे हैं जो बिल्कुल भी नहीं बदले हैं। यदि वह डेटा का लगभग 70% है, तो आपको सर्वर संसाधनों के आधार पर अधिक डाउनटाइम की आवश्यकता है।

यह अस्वीकार्य है।

तो, जितना अधिक आपको इन परिदृश्यों पर वृद्धिशील भार का उपयोग करने की आवश्यकता है। निम्नलिखित अनुभागों में, आप सीखेंगे कि वृद्धिशील लोड का उपयोग करके डेटा को तेज़ी से कैसे लोड किया जाए।

CDC का उपयोग करके SSIS में इंक्रीमेंटल लोड

सबसे पहले, आइए चेंज डेटा कैप्चर (सीडीसी) का उपयोग करने पर विचार करें। ध्यान दें कि यहां से अगले 3 उदाहरणों में, हम सरल उदाहरणों का उपयोग करने जा रहे हैं। इसलिए, पैकेज डिज़ाइन उद्देश्य को धुंधला नहीं करेगा।

उदाहरण के साथ शुरू करने से पहले, इस खंड में निम्नलिखित शामिल होंगे:

  • सबसे पहले, डेटाबेस और टेबल में सीडीसी को कैसे सक्षम करें
  • फिर, सीडीसी का उपयोग करके एसएसआईएस वृद्धिशील भार के लिए एसएसआईएस पैकेज बनाना
  • आखिरकार, चल रहा है और परिणामों की जांच कर रहा है

चित्र 3 इस उदाहरण के घटकों को दिखाता है।

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

डेटाबेस और तालिका में सीडीसी को कैसे सक्षम करें

सीडीसी के बिना डेटाबेस और टेबल सेटिंग्स डिफ़ॉल्ट हैं। डेटाबेस को सीडीसी-सक्षम बनाने के लिए, यहां टी-एसक्यूएल सिंटैक्स है:

-- point to the database you need to CDC-enable
USE SportsCarSales
GO

-- this will enable CDC to the current database.
EXEC sys.sp_cdc_enable_db
GO

फिर, यह जाँचने के लिए कि क्या सीडीसी वास्तव में सक्षम है, इसे चलाएँ:

select name from sys.databases
where is_cdc_enabled=1

यदि आपके द्वारा सीडीसी के लिए सक्षम किए गए डेटाबेस का नाम प्रकट होता है, तो आप जाने के लिए अच्छे हैं। आपका डेटाबेस अब सीडीसी-सक्षम है।

लेकिन बात यहीं खत्म नहीं होती। आपको यह बताना होगा कि किसी भी बदलाव के लिए आप किस तालिका को ट्रैक करना चाहते हैं। sp_cdc_enable_table चाल चलेगा। इसका एक उदाहरण नीचे दिया गया है।

EXEC sys.sp_cdc_enable_table
@source_schema = N'dbo',
@source_name   = N'sportsCarSales',
@role_name     = NULL,
@supports_net_changes = 1
GO

ऊपर दिए गए कोड को चलाने से नीचे इसी तरह के संदेश आने चाहिए:

Job 'cdc.SportsCarSales_capture' started successfully.
Job 'cdc.SportsCarSales_cleanup' started successfully.

वे संदेश सीडीसी के लिए तालिका को सक्षम करने के बाद बनाए गए 2 नए SQL सर्वर एजेंट कार्य हैं। इसलिए सीडीसी को काम करने के लिए आपको SQL सर्वर एजेंट की आवश्यकता है। चित्र 4 में एक स्क्रीनशॉट देखें।

sportsCarSales . पर सम्मिलित करना, हटाना और अपडेट करना तालिका स्वचालित रूप से cdc.dbo_sportsCarSales_CT नामक किसी अन्य तालिका में परिवर्तनों को रिकॉर्ड करेगी . इस तालिका में मूल की तरह कॉलम हैं। चित्र 5 में स्क्रीनशॉट देखें।

_$ऑपरेशन बाईं तालिका में कॉलम विशेष रुचि का है। इस कॉलम के संभावित मान 1 (हटाएं), 2 (सम्मिलित करें), 3 और 4 (अपडेट) हैं। अपडेट 2 मानों का उपयोग करता है:एक पहले . स्तंभ मानों के लिए अद्यतन (वह 3 है)। और दूसरा स्तंभ मानों के लिए बाद अद्यतन (वह 4 है)। अपने SSIS पैकेज को चलाने से पहले मानों की जाँच करते समय आप इस कॉलम की जाँच कर सकते हैं। सीडीसी स्रोत और सीडीसी स्प्लिटर परिवर्तन की पहचान करते समय घटक इस तालिका का उपयोग करते हैं। इनके बारे में अगले भाग में।

CDC का उपयोग करके SSIS इंक्रीमेंटल लोड के लिए SSIS पैकेज बनाना

सीडीसी का उपयोग करके वृद्धिशील भार के साथ एसएसआईएसपैकेज बनाने के चरण यहां दिए गए हैं। यह मानता है कि आपके पास विजुअल स्टूडियो 2019 में पहले से ही एक ब्लैंक पैकेज है। यहां हमारा लक्ष्य sportsCarSales से पंक्तियों को लोड करना है। तालिका में FactSportsCarSales डेटा वेयरहाउस में तथ्य तालिका।

निम्नलिखित चरणों का सारांश है:

स्टेप 1। 2 डेटाबेस कनेक्शन प्रबंधक बनाएँ
चरण 2। 2 सीडीसी नियंत्रण कार्य को नियंत्रण प्रवाह में खींचें
चरण 3। डेटा प्रवाह कार्य को खींचें और सीडीसी नियंत्रण कार्य से कनेक्ट करें

चरण #1। 2 डेटाबेस कनेक्शन प्रबंधक बनाएं

हमें यहां 2 डेटाबेस कनेक्शन चाहिए। एक ADO.Net कनेक्शन है जो सीडीसी-सक्षम डेटाबेस को इंगित करना चाहिए। और फिर, गंतव्य के रूप में डेटा वेयरहाउस में OLE DB कनेक्शन बनाएं। दोनों SQL सर्वर 2019 डेटाबेस हैं। तद्नुसार चित्र 6 और 7 देखें। इस उदाहरण में, दोनों डेटाबेस एक ही मशीन पर हैं। और हम कनेक्ट करने के लिए Windows प्रमाणीकरण का उपयोग कर रहे हैं।

तो, कनेक्शन प्रबंधक . में विंडो पर राइट-क्लिक करें और नया ADO.Net कनेक्शन चुनें . फिर, सर्वर, प्रमाणीकरण और डेटाबेस सेटिंग्स भरें जैसा कि नीचे चित्र 6 में देखा गया है।

फिर, डेटा वेयरहाउस में OLE DB कनेक्शन बनाएँ। कनेक्शन प्रबंधक विंडो में, राइट-क्लिक करें और नया OLE DB कनेक्शन चुनें . फिर, सर्वर, प्रमाणीकरण और डेटाबेस का नाम भरें। यहां डेटा वेयरहाउस निर्दिष्ट करें।

चरण #2। 2 सीडीसी नियंत्रण कार्य को नियंत्रण प्रवाह में खींचें

सीडीसी कंट्रोल टास्क को कंट्रोल फ्लो में ड्रैग करने के बाद हमें 2 चीजें करने की जरूरत होती है।

मार्क सीडीसी स्टार्ट

सबसे पहले, हमें सीडीसी कंट्रोल टास्क को मार्क सीडीसी स्टार्ट पर कॉन्फ़िगर करने की आवश्यकता है। और फिर, एक सीडीसी स्टेट टेबल बनाएं। यह एक कॉन्फ़िगरेशन विंडो में किया जा सकता है। नीचे चित्र 8 देखें।

चित्र 9 में क्रमांकित चरणों का अनुसरण करते हुए, निम्नलिखित विवरण हैं।

  1. चित्र 6 में हमारे द्वारा बनाए गए ADO.Net कनेक्शन का चयन करें।
  2. फिर, सीडीसी प्रारंभ चिह्नित करें select चुनें ।
  3. क्लिक करें नया एक सीडीसी राज्य चर बनाने के लिए। फिर, एक विंडो दिखाई देगी। ठीकक्लिक करें डिफ़ॉल्ट चर नाम बनाने के लिए उपयोगकर्ता::CDC_State
  4. ADO.Net कनेक्शन चुनें ताकि हम उस डेटाबेस में सीडीसी स्थिति को स्टोर कर सकें।
  5. क्लिक करें नया राज्य भंडारण के लिए एक टेबल बनाने के लिए। स्क्रिप्ट आपके लिए पहले ही बनाई जा चुकी है। तो, बस चलाएं . क्लिक करें अगली विंडो पर।
  6. फिर, CDC_State select चुनें राज्य के नाम के रूप में।
  7. अंत में, ठीक click क्लिक करें ।

इस सीडीसी नियंत्रण कार्य को कॉन्फ़िगर करने के बाद, पैकेज चलाएँ। आप अभी तक अन्य डेटाबेस में कॉपी किए गए रिकॉर्ड नहीं देखेंगे। लेकिनराज्य तालिका (dbo.cdc_state ) प्रारंभिक मानों से भर जाएगा।

यहां से, आप इस सीडीसी नियंत्रण कार्य को अक्षम करना चुन सकते हैं या अगले कार्य में नए मानों के साथ इसे फिर से अधिलेखित कर सकते हैं।

प्रसंस्करण रेंज प्राप्त करें

या तो आप एक नया सीडीसी नियंत्रण कार्य नियंत्रण प्रवाह में खींचें या पिछले एक को अधिलेखित करें। सीडीसी कंट्रोल ऑपरेशन (#2) को छोड़कर, कॉन्फ़िगरेशन चित्र 9 जैसा ही है। इस बार, प्रसंस्करण श्रेणी प्राप्त करें select चुनें . फिर, ठीक . क्लिक करें . इसे बाद में STEP #3 में डेटा फ़्लो टास्क से कनेक्ट करें।

संसाधित श्रेणी को चिह्नित करें

अन्य सीडीसी नियंत्रण कार्य को पहले वाले की तरह कॉन्फ़िगर करें, इस समय को छोड़कर, संसाधित श्रेणी चिह्नित करें चुनें सीडीसी नियंत्रण संचालन के लिए। चरण #3 में डेटा प्रवाह कार्य को इससे कनेक्ट करें।

चरण #3। डेटा फ़्लो टास्क को ड्रैग करें और सीडीसीकंट्रोल टास्क से कनेक्ट करें

यह डेटा फ़्लो टास्क निष्कर्षण और लोडिंग करेगा जैसा कि पहले चित्र 3 में देखा गया है। इससे पहले कि हम प्रत्येक चरण के विवरण में गोता लगाएँ, यहाँ एक सारांश है:

A. एक सीडीसी स्रोत जोड़ें
बी एक सीडीसी स्प्लिटर जोड़ें और इसे सीडीसी स्रोत से कनेक्ट करें
C. रिकॉर्ड हटाने के लिए OLE DB कमांड जोड़ें
D. रिकॉर्ड डालने के लिए OLE DB गंतव्य जोड़ें
E. रिकॉर्ड अपडेट करने के लिए एक और OLE DB कमांड जोड़ें

अब, इसमें गोता लगाएँ।

ए. सीडीसी स्रोत जोड़ें

एक सीडीसी स्रोत Drag खींचें नीचे चित्र 9 में दिखाए गए सेटिंग्स के साथ घटक।

चित्र 9 में क्रमांकित चरणों का अनुसरण करते हुए, निम्नलिखित विवरण हैं:

  1. सबसे पहले, चित्र 6 में हमारे द्वारा बनाए गए ADO.Net कनेक्शन का चयन करें।
  2. फिर, सीडीसी-सक्षम तालिका चुनें sportsCarSales
  3. कैप्चर इंस्टेंस चुनें dbo_SportsCarSales
  4. फिर, नेट select चुनें सीडीसी प्रसंस्करण मोड के लिए। यह केवल शुद्ध परिवर्तन लौटाएगा। प्रत्येक प्रसंस्करण मोड के विस्तृत विवरण के लिए, इस लिंक को देखें। आप पूर्वावलोकन . पर भी क्लिक कर सकते हैं यह देखने के लिए कि किन पंक्तियों को शामिल किया जाएगा।
  5. उस सीडीसी स्टेट वेरिएबल को चुनें जिसे हमने पहले बनाया था (चित्र 9)।
  6. आखिरकार, ठीक क्लिक करें ।
बी. एक सीडीसी स्प्लिटर जोड़ें और इसे सीडीसी स्रोत से कनेक्ट करें

केवल एक सीडीसी स्प्लिटर . की आवश्यकता है एक सीडीसी स्रोत . है इससे पहले। तो, कनेक्ट करें सीडीसी स्रोत इस घटक से पहले। यह इन्सर्ट, अपडेट और डिलीट में बदलावों को अलग कर देगा।

सी. रिकॉर्ड मिटाने के लिए OLE DB कमांड जोड़ें

सबसे पहले, आपको इस घटक को डिलीट रिकॉर्ड्स के रूप में लेबल करना होगा (चित्र 3 देखें)। फिर, इसे सीडीसी स्प्लिटर से कनेक्ट करें। जब कोई संकेत दिखाई दे, तो डिलीटआउटपुट चुनें आउटपुट के लिए और ठीक . क्लिक करें ।

फिर, OLE DB कमांड को कॉन्फ़िगर करें कनेक्शन प्रबंधक टैब। चित्र 10 देखें।

इसके बाद, घटक गुण . में टैब में, SQLCommand . के लिए DELETE कमांड निर्दिष्ट करें संपत्ति। कमांड इस तरह होनी चाहिए:

DELETE FROM FactSportsCarSales
WHERE SalesID = ?

नीचे चित्र 11 में एक स्क्रीनशॉट देखें।

प्रश्न चिह्न SalesID . के लिए एक पैरामीटर तैयार करेगा . प्रत्येक बिक्री आईडी CDCSplitter . से आने वाला मान FactSportsCarSales . में पंक्तियों को हटाने के लिए उपयोग किया जाएगा टेबल।

फिर, कॉलम मैपिंग . में टैब, SalesID को मैप करें पैरामीटर के लिए तालिका का स्तंभ (परम_0 ) चित्र 12 देखें।

अंत में, ठीक click क्लिक करें

डी. रिकॉर्ड सम्मिलित करने के लिए एक OLE DB गंतव्य जोड़ें

सबसे पहले, किसी OLE DB गंतव्य को खींचें . फिर, इसे रिकॉर्ड सम्मिलित करें लेबल करें . इसे सीडीसी स्प्लिटर से कनेक्ट करें . फिर, इन्सर्टआउटपुट select चुनें जब एक विंडो प्रॉम्प्ट प्रकट होता है। बुनियादी सेटिंग्स के लिए चित्र 14 देखें।

चित्र 13 में क्रमांकित चरणों का अनुसरण करते हुए, नीचे विवरण दिया गया है:

  1. सबसे पहले, चित्र 7 में हमारे द्वारा बनाए गए OLE DB कनेक्शन का चयन करें।
    फिर, FactSportsCarSales . चुनें तथ्य तालिका।
  2. अंत में, ठीक click क्लिक करें ।
E. रिकॉर्ड अपडेट करने के लिए OLE DB कमांड जोड़ें

एक और OLE DB कमांड को ड्रैग करें और इसे लेबल करें रिकॉर्ड अपडेट करें। फिर, इसे सीडीसी स्प्लिटर . से कनेक्ट करें . यह स्वचालित रूप से अपडेटऑउटपुट . को चुनेगा आउटपुट कनेक्शन प्रबंधक टैब सेटिंग चित्र 11 की तरह ही होनी चाहिए।

लेकिन घटक गुणSQLCommand इस तरह का मान होना चाहिए:

UPDATE [dbo].[FactSportsCarSales]
   SET [ClientID] = ?
      ,[SportsCarID] = ?
      ,[PurchaseDate] = ?
      ,[Quantity] = ?
      ,[UnitPrice] = ?
 WHERE [SalesID]= ?

ऊपर दिए गए कोड में प्रश्न चिह्नों की संख्या आपको बताएगी कि परम_0 से शुरू करके कितने पैरामीटर का उपयोग करना है . परम_0 . से पैरामीटर की स्थिति करने के लिए परम_5 कोड में उनके स्थान के आधार पर व्यवस्थित किया जाता है। तो, परम_0 isfor ClientID , परम_1 SportsCarID . के लिए है , और इसी तरह।

कॉलम मैपिंग देखें चित्र 15 में।

डेटाबेस और टेबल स्तर में सीडीसी को कॉन्फ़िगर करने के बाद, यह जांचने का तरीका है कि सीडीसी काम करता है या नहीं, पंक्तियों को जोड़कर और बदलकर। तो चलिए टेबल में कुछ रिकॉर्ड जोड़ते हैं।


USE SportsCarSales
GO

INSERT INTO SportsCarSales (ClientID, SportsCarID, PurchaseDate, Quantity, UnitPrice)
	VALUES (1, 1920, '02/03/2022', 1, 845000.0000),
	(5, 1920, '01/22/2022', 1, 845000.0000),
		(54, 1920, '01/15/2022', 1, 845000.0000),
		(62, 1920, '02/04/2022', 1, 845000.0000);
GO

यह देखने के लिए कि क्या यह सीडीसी में रिकॉर्ड किया गया है cdc.dbo_sportsCarSales_CT से पूछताछ कर रहा है। टेबल।

SELECT * FROM cdc.dbo_sportsCarSales_CT;

चित्र 15 में INSERT कमांड के बाद परिवर्तन डेटा कैप्चर में परिणाम देखें।

तो, इसने आवेषण रिकॉर्ड किया। यह अच्छा है।

अब, SSIS पैकेज को पहले चलाने का प्रयास करें। परिणाम नीचे चित्र 16 जैसा ही होना चाहिए।

चित्र 16 . सीडीसी का उपयोग करके वृद्धिशील लोड के लिए एसएसआईएस पैकेज रनटाइम परिणाम।

और अंत में, FactSportsCarSales . में परिणामों की क्वेरी करना तालिका 4 रिकॉर्ड के समान सेट को प्रकट करती है।

डेटटाइम कॉलम का उपयोग करके SSIS में इंक्रीमेंटल लोड

डेटटाइम कॉलम का उपयोग करके एसएसआईएस में वृद्धिशील भार वृद्धि में डेटा एकत्र करने का एक और तरीका है। यदि आप सीडीसी के बिना ईटीएल इना टेबल करते हैं, तो यह आपका अगला विकल्प है।

स्रोत तालिका में संशोधित . हो सकता है या अंतिम अद्यतन चित्र 17 में एक जैसा स्तंभ।

परिवर्तनों को क्वेरी करने के लिए अधिकतम संशोधित जानना है गंतव्य से स्तंभ मान। फिर, स्रोत से उन सभी रिकॉर्ड्स को क्वेरी करें जिनमें संशोधित . से अधिक है गंतव्य से कॉलमवैल्यू।

इस तकनीक के विशिष्ट अवयवों को चित्र 18 में दिखाया गया है।

कृपया इस प्रकार के वृद्धिशील भार को पकाने के निर्देशों का पालन करें। इस खंड के लिए निम्नलिखित उप-विषय हैं:

  • डेटटाइम कॉलम के साथ SSIS इंक्रीमेंटल लोड करने के लिए पैकेज बनाना
  • पैकेज रनटाइम परिणाम

DateTime कॉलम के साथ SSIS इंक्रीमेंटल लोड करने के लिए पैकेज बनाना

हमारा उद्देश्य स्पोर्ट्सकार्स . को लोड करना है dimSportsCars . में तालिका किसी अन्य डेटाबेस में आयाम तालिका। निम्नलिखित चरणों का सारांश है:

स्टेप 1। 2 OLE DB कनेक्शन प्रबंधक बनाएँ
चरण 2। 2 पैकेज वैरिएबल बनाएं
चरण 3। एक SQL कार्य निष्पादित करें जोड़ें नियंत्रण प्रवाह में
चरण 4। एक डेटा प्रवाह कार्य जोड़ें

आइए शुरू करते हैं।

चरण #1। 2 OLE DB कनेक्शन प्रबंधक बनाएँ

पहला OLE DB कनेक्शन एक ट्रांजेक्शनल डेटाबेस से है। और सेटिंग सरल हैं जैसा कि चित्र 19 में दिखाया गया है।

फिर, डेटा वेयरहाउस के लिए एक और OLE DB कनेक्शन बनाएँ। यह चित्र 7 जैसा ही होना चाहिए।

चरण #2। 2 पैकेज वैरिएबल बनाएं

पहला वेरिएबल dimSportsCars . से अंतिम संशोधित तारीख को होल्ड करेगा आयाम तालिका। फिर, दूसरा कस्टम SQL क्वेरी को होल्ड करेगा।

ए. उपयोगकर्ता बनाएं::sportsCars_lastअपडेट वैरिएबल
  1. चर में विंडो में, चर जोड़ें क्लिक करें ।
  2. इसे नाम दें sportsCars_lastupdate
  3. डेटा प्रकार को दिनांक समय पर सेट करें ।
बी. User::sqlCommand वैरिएबल बनाएं
  1. चर में विंडो में, चर जोड़ें क्लिक करें ।
  2. इसे नाम दें sqlCommand
  3. प्रकार को स्ट्रिंग पर सेट करें ।
  4. इलिप्सिस बटन पर क्लिक करके अभिव्यक्ति बनाएं . अभिव्यक्ति निर्माता . के लिए चित्र 21 देखें विंडो और वास्तविक स्ट्रिंग एक्सप्रेशन।
  5. ठीकक्लिक करें ।

SQL स्ट्रिंग इस तरह होनी चाहिए:

"SELECT  SportsCarID, StyleID, ManufacturerID, Model, UnitPrice, created, modified 
FROM sportsCars
WHERE modified > '" + (DT_WSTR, 50) @[User::sportsCars_lastupdate]  + "' 
ORDER BY SportsCarID;"

ध्यान दें कि हमने WHERE क्लॉज को संशोधित . पर सेट किया है उपयोगकर्ता से बड़ा::sportsCars_lastupdate

बाद के चरणों में 2 चर सेट करने के बारे में अधिक जानकारी होगी।

चरण #3। नियंत्रण प्रवाह में SQL कार्य निष्पादित करें जोड़ें

यह कार्य अंतिम संशोधित . प्राप्त करने के लिए गंतव्य तालिका को क्वेरी करेगा तिथि मूल्य। एक SQL कार्य निष्पादित करें Drag खींचें नियंत्रण प्रवाह के लिए। फिर, इसे लेबल करें डीडब्ल्यू से अंतिम संशोधित तिथि प्राप्त करें . फिर, चित्र 21 में सेटिंग देखें।

यहां सेट करने के लिए महत्वपूर्ण गुण हैं कनेक्शन , SQLStatement , और परिणामसेट गुण।

कनेक्शन सेट करें STEP #1 में सेट किए गए दूसरे OLE DB कनेक्शन के लिए प्रॉपर्टी। फिर, SQLStatement . सेट करें नीचे दिए गए कोड के लिए संपत्ति।

select max(modified) as LastUpdate from dimSportsCars

फिर, परिणाम सेट . सेट करें एक एकल पंक्ति . के लिए गुण ।

अंत में, आपको LastUpdate . को मैप करना होगा User::sportsCars_lastupdate . के लिए कॉलम उपनाम (उपरोक्त कोड देखें) चर। चित्र 22 में एक स्क्रीनशॉट देखें।

अंत में, ठीक . क्लिक करें नई सेटिंग सहेजने के लिए।

चरण #4। डेटा प्रवाह कार्य जोड़ें

किसी डेटा प्रवाह कार्य को खींचें नियंत्रण प्रवाह से कनेक्ट करें और SQL कार्य निष्पादित करें . को कनेक्ट करें इसके लिए। फिर, डेटा प्रवाह कार्य को लेबल करें dimSportsCars आयाम अपडेट करें . फिर, डेटा प्रवाह कार्य में घटकों को जोड़ने के लिए चरणों का पालन करें ।

डेटा प्रवाह कार्य इसके भीतर कई चरण हैं:

A. OLE DB स्रोत जोड़ें
B. स्रोत को गंतव्य से तुलना करने के लिए लुकअप परिवर्तन जोड़ें
C. रिकॉर्ड अपडेट करने के लिए OLE DB कमांड जोड़ें
D. रिकॉर्ड डालने के लिए एक OLE DB गंतव्य जोड़ें

अब, चलिए शुरू करते हैं।

A. OLE DB स्रोत जोड़ें

यह OLE DB स्रोत बदले गए रिकॉर्ड के लिए स्रोत तालिका को क्वेरी करेगा। चित्र 23 में सेटिंग देखें।

चित्र 23 में दी गई संख्याओं के बाद, यहाँ विवरण दिया गया है:

  1. सबसे पहले, हमारे द्वारा बनाए गए OLE DB कनेक्शन को निर्दिष्ट करें। चित्र 20 देखें।
  2. फिर, डेटा एक्सेस मोड सेट करें करने के लिए एसक्यूएल कमांड से चर
  3. फिर, वेरिएबल User::sqlCommand चुनें जिसे हमने पहले बनाया था। चित्र 21 देखें।
  4. आखिरकार, ठीक क्लिक करें ।
बी. स्रोत को गंतव्य से तुलना करने के लिए लुकअप परिवर्तन जोड़ें

अब, हमें स्रोत और गंतव्य तालिकाओं की तुलना करने का एक तरीका चाहिए। हम लुकअप . का उपयोग कर सकते हैं ऐसा करने के लिए परिवर्तन घटक। यह 2 टेबलों के बीच एक जॉइन करेगा।

तो, एक लुकअप . खींचें डेटा प्रवाह में परिवर्तन और इसे नाम दें परिवर्तन को वर्गीकृत करें . फिर, इसे OLE DB स्रोत . से कनेक्ट करें पूर्व। इसे डबल-क्लिक करें। सामान्य . की स्थापना के लिए चित्र 24 देखें पेज.

ड्रॉपडाउन को पंक्तियों को बिना मिलान वाले आउटपुट पर रीडायरेक्ट करें . पर सेट करें जैसा कि चित्र 24 में देखा गया है। इसका मतलब है कि हम उन पंक्तियों का उपयोग करने जा रहे हैं जिनका कोई मेल नहीं है। और इस मामले में, यह स्रोत में मौजूद पंक्तियों का पता लगाने के लिए है, लेकिन गंतव्य में नहीं।

इसके बाद, कनेक्शन . क्लिक करें लुकअप परिवर्तन संपादक . के बाएं फलक में पृष्ठ . फिर, चित्र 25 देखें कि क्या सेट करना है।

चित्र 26 में, आपको लक्ष्य तालिका के लिए OLE DB कनेक्शन निर्दिष्ट करने की आवश्यकता है। (चित्र 7 देखें)। और फिर, SQL क्वेरी को नीचे दिए गए कोड पर सेट करें।

SELECT SportsCarID from dimSportsCars

हमें केवल SportsCarID . की आवश्यकता है कॉलम तुलना करने के लिए, इसलिए हमने पूरी तालिका के बजाय एक क्वेरी का उपयोग किया।

इसके बाद, कॉलम . पर क्लिक करें स्रोत क्वेरी कुंजी कॉलम की मैपिंग को गंतव्य पर सेट करने के लिए पृष्ठ। मानचित्रण के लिए चित्र 26 देखें।

जैसा कि चित्र 26 में देखा गया है, SportsCarID का उपयोग करते हुए स्रोत से गंतव्य तक एक रेखा होनी चाहिए कुंजी स्तंभ। तुलना के लिए दोनों प्रमुख स्तंभों का उपयोग किया जाएगा।

अंत में, ठीक . क्लिक करें ।

सी. रिकॉर्ड अपडेट करने के लिए OLE DB कमांड जोड़ें

यह हिस्सा उन रिकॉर्ड को अपडेट करेगा जिनका मिलान SportsCarID . से होगा लुकअप . के प्रमुख मान परिवर्तन।

तो, एक OLE DB कमांड को ड्रैग करें डेटा प्रवाह में शामिल करें और इसे नाम दें dimSportsCars अपडेट करें . फिर, इसे लुकअप . से कनेक्ट करें पहले परिवर्तन। जब कोई संकेत दिखाई दे, तो आउटपुट सेट करें लुकअप मैच आउटपुट . के लिए . फिर, ठीक . क्लिक करें ।

OLE DB कमांड पर डबल-क्लिक करें और गुणों को कनेक्शन प्रबंधक . में सेट करें टैब। चित्र 27 देखें।

चित्र 27 दिखाता है कि आपको कनेक्शन प्रबंधक सेट करने की आवश्यकता है लक्ष्य डेटाबेस के लिए (चित्र 8 देखें)। फिर, घटक गुण . क्लिक करें टैब। गुण सेटिंग के लिए चित्र 28 देखें।

SQLCommand गुण इस पर सेट है:

UPDATE dimSportsCars
SET StyleID = ?, ManufacturerID = ? , MODEL = ? , UnitPrice = ? , modified = ?
WHERE SportsCarID = ?

हमने पहले भी कुछ ऐसा ही किया था। प्रश्न चिह्न पैरामीटर प्लेसहोल्डर हैं। और अगर हम सही स्रोत कॉलम को मैप करते हैं, तो संबंधित लक्ष्य कॉलम सेट किया जाएगा। चित्र 29 में मानचित्रण देखें।

अंत में, ठीक . क्लिक करें ।

डी. रिकॉर्ड सम्मिलित करने के लिए एक OLE DB गंतव्य जोड़ें

यह भाग SportsCars . में पाए गए नए रिकॉर्ड सम्मिलित करेगा dimSportsCars . में तालिका आयाम योग्य।

तो, किसी OLE DB गंतव्य को खींचें घटक और इसे नाम दें dimSportsCars में नए रिकॉर्ड डालें। इसे डबल-क्लिक करें और कनेक्शन और लक्ष्य तालिका सेट करें। चित्र 30 देखें।

जैसा कि चित्र 30 में दिखाया गया है, डेटा वेयरहाउस से कनेक्शन सेट करें (चित्र 8) और dimSportsCars चुनें आयाम तालिका।

इसके बाद, मैपिंग . पर क्लिक करें यह देखने के लिए कि कॉलम तदनुसार मैप किए गए हैं या नहीं। चूंकि स्तंभ नाम स्रोत और लक्ष्य दोनों में समान हैं, इसलिए उन्हें स्वचालित रूप से मैप किया जाएगा।

अंत में, ठीक . क्लिक करें ।

पैकेज रनटाइम परिणाम

अब जबकि पैकेज पूरा हो गया है, यहाँ चित्र 31 में परिणाम का एक स्क्रीनशॉट है।

प्रक्रिया ने 8 पंक्तियों को अपडेट किया और dimSportsCars . में 1 नई पंक्ति सम्मिलित की आयाम तालिका।

लुकअप का उपयोग करके SSIS में इंक्रीमेंटल लोड

वृद्धिशील लोड करने का एक अन्य तरीका यह है कि लक्ष्य से स्रोत की तुलना करके देखें कि क्या डालने, अपडेट करने और हटाने की आवश्यकता है। और यह आपका विकल्प है यदि कोई डेटटाइम कॉलम नहीं है और कोई सीडीकॉन दोनों टेबल नहीं है। ऐसा करने का एक तरीका लुकअप . का उपयोग करना है परिवर्तन।

इस दृष्टिकोण के विशिष्ट अवयवों को चित्र 32 में दिखाया गया है।

ध्यान दें कि चित्र 32 में सरल दृष्टिकोण उन तालिकाओं के लिए लागू है जो हार्ड डिलीट की अनुमति नहीं देते हैं। अगर डिलीट को हैंडल करने की जरूरत है, तो एक पूर्ण जॉइन का उपयोग करके मर्ज जॉइन लागू हो सकता है।

इस खंड के लिए 2 उप-विषय हैं:

लुकअप का उपयोग करके एसएसआईएस वृद्धिशील भार के लिए एसएसआईएस पैकेज बनाना
पैकेज रनटाइम परिणाम

आइए इसमें गोता लगाएँ।

लुकअप का उपयोग करके SSIS इंक्रीमेंटल लोड के लिए SSIS पैकेज बनाना

यहां हमारा उद्देश्य निर्माताओं . की पंक्तियों को लोड करना है dimManufacturers . में तालिका आयाम योग्य।

यह मानता है कि आपके पास एक खाली SSISपैकेज तैयार है।

निम्नलिखित चरणों का सारांश है:

स्टेप 1। 2 OLE DB कनेक्शन बनाएं
चरण 2। डेटा प्रवाह कार्य जोड़ें

आइए उदाहरण से शुरू करते हैं।

चरण #1। 2 OLE DB कनेक्शन बनाएं

आप स्रोत के लिए चित्र 19 और लक्ष्य के लिए चित्र 7 देख सकते हैं। हम यहां उन्हीं कनेक्शन मैनेजरों का उपयोग कर रहे हैं।

चरण #2। डेटा प्रवाह कार्य जोड़ें

किसी डेटा प्रवाह कार्य को खींचें नियंत्रण प्रवाह में और इसे नाम दें निर्माता आयाम तालिका अपडेट करें। इसे डबल-क्लिक करें और अगले चरणों का पालन करें। नीचे संक्षेप में डेटा प्रवाह कार्य . के अंदर के चरण दिए गए हैं ।

उ. एक OLE DB स्रोत जोड़ें
B. एक लुकअप Add जोड़ें नए रिकॉर्ड के लिए स्कैन करने के लिए परिवर्तन
C. एक OLE DB गंतव्य जोड़ें रिकॉर्ड डालने के लिए।
D. एक और लुकअप जोड़ें परिवर्तनों के लिए स्कैन करने के लिए परिवर्तन
E. एक OLE DB कमांड जोड़ें लक्ष्य तालिका अपडेट करने के लिए

ए. OLE DB स्रोत जोड़ें

किसी OLE DB स्रोत . को खींचें और इसे लेबल करें निर्माता . कनेक्शन प्रबंधक सेट करें जैसा कि चित्र 33 में देखा गया है।

बी. नए रिकॉर्ड स्कैन करने के लिए लुकअप ट्रांसफ़ॉर्मेशन जोड़ें

यह लुकअप ट्रांसफ़ॉर्मेशन निर्माता आईडी के आधार पर उन रिकॉर्ड के लिए स्कैन करेगा जो लक्ष्य में मौजूद नहीं हैं मुख्य स्तंभ और सभी मेल न खाने वाली पंक्तियाँ टेबल इंसर्ट के लिए उम्मीदवार हैं।

एक लुकअप खींचें ट्रांसफॉर्मेशन और इसे नाम दें डिम मैन्युफैक्चरर्स लुकअप करें। फिर, उस पर डबल-क्लिक करें।

सामान्य . के लिए सेटिंग पृष्ठ चित्र 24 के समान होना चाहिए। इस बीच, डेटा वेयरहाउस से कनेक्शन सेट करें और कनेक्शन के लिए एक क्वेरी का उपयोग करें पृष्ठ सेटिंग्स। चित्र 34 देखें।

सी. रिकॉर्ड सम्मिलित करने के लिए एक OLE DB गंतव्य जोड़ें

किसी OLE DB गंतव्य को खींचें और इसे नाम दें नए रिकॉर्ड डालें। इसे लुकअप . से कनेक्ट करें रूपांतरण और लुकअप नो मैच आउटपुट चुनें जब एक संकेत प्रकट होता है। इसे डबल-क्लिक करें और कनेक्शन और लक्ष्य तालिका सेट करें जैसा कि चित्र 35 में देखा गया है।

स्रोत और लक्ष्य तालिका में समान स्तंभ नाम होते हैं और वे स्वचालित रूप से मैप हो जाएंगे। चित्र 36 देखें।

अंत में, ठीक . क्लिक करें ।

डी. परिवर्तनों के लिए स्कैन करने के लिए एक और लुकअप परिवर्तन जोड़ें

पिछले लुकअप . के विपरीत परिवर्तन, यह निर्माता . में परिवर्तनों के लिए स्कैन करेगा कॉलम। और यदि कोई परिवर्तन होता है, तो वह तालिका अद्यतन के लिए एक उम्मीदवार होगा।

एक और लुकअपखींचें परिवर्तन और इसे नाम दें लुकअप रिकॉर्ड्स जो बदल गए। इसे पहले लुकअप . से कनेक्ट करें परिवर्तन। सामान्य इस लुकअप के लिए पेज वैसा ही होना चाहिए जैसा कि चित्र 24 में है।

इस बीच, कनेक्शन पृष्ठ नीचे चित्र 37 जैसा दिखना चाहिए।

इस बीच, चित्र 38 में मैपिंग पर ध्यान दें।

चित्र 38 निर्माता . के माध्यम से मैपिंग दिखाता है नाम। यदि यह समान नहीं है, तो स्रोत में परिवर्तन होता है। और इसे लक्ष्य में कॉपी करने की आवश्यकता है।

ई. लक्ष्य तालिका को अद्यतन करने के लिए OLE DB कमांड जोड़ें

SQLCommand . को छोड़कर, सेटिंग चित्र 29 की तरह ही होनी चाहिए . अद्यतन आदेश इस तरह होना चाहिए:

UPDATE dimManufacturers
set manufacturer = ?
where manufacturerID = ?

कॉलम मैपिंग को तदनुसार पैरामीटर में समायोजित करें।

पैकेज रनटाइम परिणाम

पूर्ण? फिर, पैकेज चलाएँ। आप रनटाइम के परिणाम चित्र 39 के समान ही देखेंगे।

SSIS डेटा लोड करने का सबसे अच्छा टूल

सभी उदाहरण हमने पहले माइक्रोसॉफ्ट से आने वाले आउट-ऑफ-द-बॉक्स घटकों का उपयोग किया था। हालांकि यह कुछ परियोजनाओं के लिए काफी अच्छा है, अगर आपको एसएसआईएस के माध्यम से क्लाउड और डेटाबेस दोनों स्रोतों को एकीकृत करना है तो क्या होगा?

यहीं पर देवार्ट एसएसआईएस कंपोनेंट्स काम में आते हैं। ये एसएसआईएस घटक उपयोग करने के लिए सुविधाजनक हैं। और वे डेटा-स्रोत-विशिष्ट अनुकूलन और उन्नत कैशिंग का उपयोग करके उच्च-प्रदर्शन डेटा लोडिंग प्रदान करते हैं। उनके पास 40+ डेटा स्रोत भी हैं, जिनमें RDBMS पसंदीदा जैसे MySQL, PostgreSQL और Oracle शामिल हैं। इसमें सेल्सफोर्स, हबस्पॉट, गूगल एनालिटिक्स जैसी क्लाउड सेवाएं और भी बहुत कुछ शामिल हैं। इसलिए, Devart SSIS घटकों का उपयोग करके SSIS में लाखों रिकॉर्ड लोड करने का प्रयास करना उचित है।

एक उदाहरण क्यों नहीं?

वृद्धिशील भार करने के लिए Devart SSIS घटकों का उपयोग करना

आइए dimManufacturers . को दोहराने की कोशिश करें MySQL में तालिका, और Devart के लुकअप . का उपयोग करें और गंतव्य MySQL के लिए घटक। नुस्खा चित्र 40 में दिखाया गया है।

आइए अपने विजुअल स्टूडियो इंटीग्रेशन सर्विसेज प्रोजेक्ट में एक नया एसएसआईएस पैकेज जोड़कर शुरू करें। फिर, एक डेटा फ़्लोटास्क जोड़ें और उस पर डबल-क्लिक करें। फिर, नीचे दिए गए चरणों का पालन करें।

इससे पहले, यहां चरणों का सारांश दिया गया है:

स्टेप 1। एक OLE DB स्रोत जोड़ें
चरण 2। एक डेवर्ट MySQL कनेक्शन प्रबंधक जोड़ें
चरण 3। एक डेवर्ट MySQL लुकअप जोड़ें नए रिकॉर्ड के लिए स्कैन करने के लिए
चरण 4। एक और डेवर्ट MySQL लुकअप जोड़ें परिवर्तनों के लिए स्कैन करने के लिए परिवर्तन
चरण # 5। एक डेवर्ट MySQL गंतव्य जोड़ें रिकॉर्ड डालने के लिए
चरण # 6। Add another Devart MySQL Destination to update records

STEP #1. Add an OLE DB Source

This will connect to the SQL Server database we had earlier. Please refer to Figure 8. Then, set the table to dimManufacturers

STEP #2. Add a Devart MySQL Connection Manager

We need this connection for the destination database and table. So, in the Connection Managers window, right-click and select New Connection . Then, select the DevartMySQL Connection Manager type. Then, configure the database access as shown in Figure 41. Notice the simpler interface to connect. Though you can go to the Advanced tab and see more properties there.

I’m running MySQL 8 in my local machine and there’s a copy of the same database in SQL Server, but the rows are older.

STEP #3. Add a Devart MySQL Lookup Transformation to Scanfor New Records

Drag a Devart MySQL Lookup and name it Compare Source to Target . Then, connect it to the Devart MySQL Connection Manager पूर्व। Now, follow the configuration in Figure 42.

Following the numbers in Figure 42, the following are the details:

  1. First, select the Devart MySQL Connection Manager created in STEP #2.
  2. Then, select the dimmanufacturers table.
  3. In Lookup Columns , mark checked the ManufacturerID column.
  4. Then, in Input Columns , select ManufacturerID
  5. Then, select ManufacturerID in Reference Columns
  6. Finally, click OK

नोट :If you encounter a duplicate name error, go to Advanced Editor. And then, click Input and Output Properties . Rename either the Input or Output Column to a different name.

STEP #4. Add another Devart MySQL Lookup Transformation toScan for Changes

This second MySQL Lookup will scan forrecords that changed.

Drag another Devart MySQL Lookup andlabel it Get Records that Changed. Connect it to thefirst Devart MySQL Lookup . Then, choose Lookup Match Output

The setup is the same as in Figure 42. But choose the Manufacturer column instead of ManufacturerID . Do this for Lookup Columns , Input Columns , and Reference Columns

STEP #5. Add a Devart MySQL Destination to Insert Records

This step will insert records from thesource that have no match in the target.

So, drag a Devart MySQL Destination and label it Insert New Records. Connect it to the first Devart MySQL Lookup . Double-click it and configure the Connection Manager . See Figure 43.

In Figure 43, you need to set the connection to the MySQL connection manager we did in STEP #2. Then, click Component Properties . See the configuration in Figure 44.

After setting the TableName to dimmanufacturers ,click Column Mappings . Since both the source and target tables havethe same column names, the columns are automatically mapped.

Finally, click OK

STEP #6. Add Another Devart MySQL Destination to UpdateRecords

Unlike the other Devart MySQLDestination , this will update records that changed from the source.

So, drag another Devart MySQL Destination and label it Update Existing. Connect it to the second Devart MySQL Lookup Transformation. And select Lookup No Match Output when a prompt appears. The setup is the same as in STEP #5 except for the Component Properties . See Figure 45 on what to change.

Using the Devart MySQL Destination is dead easy than using an OLE DB Command. There’s no need to map parameters to columns. It also works for a Delete operation. This is unlike an OLE DB Destination that works for inserts only.

Package Runtime Results

See the runtime results in Figure 46.

निष्कर्ष

That’s it.

You learned 3 ways to do incremental load in SSIS by using the following:

  • Change Data Capture
  • DateTime Columns
  • Lookup Transformation

You also learned how to do it using DevartSSIS Components.

Though our examples are simplified to makethe principle easier to understand as possible, there’s room for improvement.We didn’t use a staging table to store all changes, whether insert, update, ordelete. This is recommended for very large data, especially when the target isin another server. You can also add an executeprocess task in SSIS for special scenarios.

Anyway, if you like this post, please shareit on your favorite social media platforms.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Azure SQL डेटाबेस में स्वचालित अनुक्रमणिका प्रबंधन

  2. क्या नए इंडेक्स कॉलम कुंजी में होने चाहिए, या शामिल हैं?

  3. डेटाटाइम के बजाय दिनांक और समय से निपटना

  4. सांख्यिकी में स्वचालित अपडेट देखने का दूसरा तरीका

  5. SQL में डेटाबेस कैसे बनाते हैं?