इस लेख में, मैं समझाऊंगा कि कैसे हम SQL सर्वर एकीकरण सेवा पैकेज की सहायता से Oracle डेटाबेस तालिका के डेटा को Excel फ़ाइल के एकाधिक कार्यपत्रकों में विभाजित और निर्यात कर सकते हैं।
अक्सर, डीबीए ने डेटाबेस से एड-हॉक रिपोर्ट जेनरेट करने के लिए कहा। हाल ही में मुझे डेटाबेस से एक रिपोर्ट तैयार करने के लिए कहा गया है। वे चाहते हैं कि मैं एक एक्सेल फ़ाइल के एकाधिक कार्यपत्रकों में एक रिपोर्ट प्रदान करूँ। इसे करने के विभिन्न तरीके हैं लेकिन क्वेरी संसाधन-गहन थी। इसलिए मैं एक निष्पादन के साथ डेटाबेस से डेटा निकालना चाहता हूं और SQL सर्वर एकीकरण सेवाओं पैकेज का उपयोग करने का निर्णय लिया है। SQL सर्वर डेटा टूल में सशर्त स्प्लिट ट्रांसफ़ॉर्मेशन नामक एक घटक होता है जिसका उपयोग कार्य को प्राप्त करने के लिए किया जा सकता है।
SQL सर्वर डेटा टूल का उपयोग करके, हम ODBC कनेक्शन का उपयोग करके विभिन्न डेटाबेस प्लेटफ़ॉर्म से डेटा पुनर्प्राप्त कर सकते हैं। अधिकांश डेटाबेस प्लेटफ़ॉर्म अपने कनेक्टिविटी ड्राइवर प्रदान करते हैं जिनका उपयोग एप्लिकेशन और डेटाबेस के बीच कनेक्शन को कॉन्फ़िगर करने के लिए किया जा सकता है।
सशर्त स्प्लिट ट्रांसफ़ॉर्मेशन क्या है
सशर्त विभाजन परिवर्तन डेटा की सामग्री के आधार पर डेटा पंक्तियों को विभिन्न आउटपुट में रूट कर सकता है। सशर्त विभाजन परिवर्तन का कार्यान्वयन एक प्रोग्रामिंग भाषा में एक केस निर्णय संरचना की तरह है। यह अभिव्यक्तियों का मूल्यांकन करता है, और परिणामों के आधार पर, डेटा पंक्ति को निर्दिष्ट आउटपुट पर निर्देशित करता है। यह परिवर्तन एक डिफ़ॉल्ट आउटपुट भी प्रदान करता है, ताकि यदि कोई पंक्ति अभिव्यक्ति से मेल नहीं खाती है, तो इसे डिफ़ॉल्ट आउटपुट पर निर्देशित किया जाता है। (एमएसडीएन संदर्भ :https://docs.microsoft.com/en-us/sql/integration-services/data-flow/transformations/conditional-split-transformation?view=sql-server-2017) ।
डेमो सेटअप
मैंने अपनी मशीन पर Oracle 11g एक्सप्रेस संस्करण स्थापित किया है। मैंने EMPLOYEESDATA . नामक एक तालिका बनाई है एचआर . में XE . की स्कीमा डेटाबेस और AdventureWorks2014 . से कुछ डमी रिकॉर्ड जोड़े डेटाबेस।
नीचे दिया गया कोड एक टेबल बनाएगा:
टेबल "एचआर" बनाएं। "EMPLOYEE_DATA" ("BusinessEntityID" NUMBER(*,0), "Title" NVARCHAR2(8), "FirstName" NVARCHAR2(50), "MiddleName" NVARCHAR2(50), "LastName" NVARCHAR2(50), "प्रत्यय" NVARCHAR2(10), "जॉबटाइटल" NVARCHAR2 (50), "फोन नंबर" NVARCHAR2 (25), "फोन नंबर प्रकार" NVARCHAR2 (50), "ईमेल पता" NVARCHAR2 (50), "ईमेल प्रचार" संख्या ( *,0), "AddressLine1" NVARCHAR2(60), "AddressLine2" NVARCHAR2(60), "City" NVARCHAR2(30), "StateProvinceName" NVARCHAR2(50), "PostalCode" NVARCHAR2(15), "CountryRegionName" NVARCHAR2( 50) ) सेगमेंट क्रिएशन तत्काल पीसीटीफ्री 10 पीसीटीयूज्ड 40 इनिट्रान 1 मैक्सट्रांस 255 नोकॉमप्रेस लॉगिंग स्टोरेज (आरंभिक 65536 अगला 1048576 न्यूनतम 1 MAXEXTENTS 2147483645 पीसीटीएनसीआरएएसएश 0 फ्रीलिस्ट्स 1 फ्रीलिस्ट्स SSDT का उपयोग करके Oracle डेटाबेस को जोड़ने के लिए, हमें Oracle क्लाइंट सॉफ़्टवेयर स्थापित करने की आवश्यकता है। SQL सर्वर डेटा उपकरण 32 बिट मोड में काम करता है इसलिए Oracle के लिए ODBC ड्राइवरों का 32 बिट संस्करण स्थापित किया जाना चाहिए। आप यहां से Oracle क्लाइंट डाउनलोड कर सकते हैं।मैंने 'HRData.xls . नामक एक एक्सेल फ़ाइल बनाई है ' जिसमें ऑस्ट्रेलिया . नामक दो वर्कशीट हैं और कनाडा . डेटा को CountryRegionName . के मान के आधार पर विभाजित किया जाएगा कॉलम। यदि देशक्षेत्रनाम . का स्तंभ मान कॉलम कनाडा है तो इसे कनाडा . में संग्रहीत किया जाएगा कार्यपत्रक और यदि देशक्षेत्रनाम . का स्तंभ मान ऑस्ट्रेलिया . है तो इसे ऑस्ट्रेलिया . में संग्रहीत किया जाएगा वर्कशीट।
जैसा कि हम सभी जानते हैं कि एसएसआईएस पैकेज कैसे बनाया जाता है, मैं सीधे समझाऊंगा कि डेटा प्रवाह कार्य कैसे बनाया जाता है।
डेटा प्रवाह कार्य बनाएं
डेटा प्रवाह कार्य में, हम निम्नलिखित तीन घटकों का उपयोग करने जा रहे हैं:
- ADO.NET स्रोत Oracle डेटाबेस से डेटा पॉप्युलेट करने के लिए।
- डेटा को कई सेटों में विभाजित करने के लिए सशर्त विभाजन।
- "ऑस्ट्रेलिया" और "कनाडा" नामक दो कार्यपुस्तिकाओं के साथ एक्सेल गंतव्य।
ADO.NET स्रोत कॉन्फ़िगर करें
खींचें और छोड़ें ADO.NET स्रोत SSIS टूलबॉक्स . से डेटा प्रवाह . तक windows और इसे नाम दें कर्मचारी डेटा जैसा कि निम्न चित्र में दिखाया गया है:
कर्मचारी डेटा पर डबल-क्लिक करें . ADO.NET स्रोत संपादक डायलॉग बॉक्स खुलेगा। यहां, हमने अभी तक कोई कनेक्शन नहीं बनाया है, इसलिए ADO.NET कनेक्शन प्रबंधक ड्रॉप-डाउन बॉक्स खाली है। हम नया कनेक्शन बनाएंगे। ऐसा करने के लिए, नया . क्लिक करें उस डायलॉग बॉक्स में। इसके बाद, एक और डायलॉग बॉक्स,कनेक्शन मैनेजर कॉन्फ़िगर करें, नीचे चित्र में दिखाए अनुसार खुलेगा:
ADO.NET कनेक्शन प्रबंधक कॉन्फ़िगर करें . में संवाद बॉक्स में, नया क्लिक करें . एक अन्य संवाद बॉक्स, कनेक्शन प्रबंधक , खुल जाएगा।
डिफ़ॉल्ट रूप से, .Net Providers\SQLClient Data Provider प्रदाता . में चुना जाएगा ड्रॉप डाउन बॉक्स। जैसा कि हम Oracle डेटाबेस से डेटा पॉप्युलेट कर रहे हैं, हम OracleClient डेटा प्रदाता का चयन करेंगे ।
सर्वर नाम . में टेक्स्ट बॉक्स में, उस सर्वर का नाम या आईपी-पता दर्ज करें जिस पर Oracle 11g स्थापित है। Oracle डेटाबेस को जोड़ने के लिए उपयोगकर्ता नाम और पासवर्ड का उपयोग किया जाएगा। मैंने अपने स्थानीय VM पर Oracle स्थापित किया था इसलिए सर्वर का नाम लोकलहोस्ट होगा . मैं HR . का उपयोग करके डेटाबेस को जोड़ने जा रहा हूं उपयोगकर्ता इसलिए उपयोगकर्ता नाम होगा HR . उपयुक्त पासवर्ड प्रदान किया और ठीक . क्लिक करें . निम्न चित्र देखें:
कॉन्फ़िगरेशन पूर्ण होने के बाद, कनेक्शन का परीक्षण करें click क्लिक करें डेटाबेस के साथ कनेक्टिविटी सत्यापित करने के लिए और ठीक click क्लिक करें
हमने ADO.NET कनेक्शन प्रबंधक को कॉन्फ़िगर किया है इसलिए डिफ़ॉल्ट कनेक्शन प्रबंधक स्वचालित रूप से ADO.NET कनेक्शन प्रबंधक में चुना जाएगा। ड्रॉप-डाउन सूची बॉक्स। हम तालिका से डेटा पुनर्प्राप्त करने जा रहे हैं इसलिए तालिका या दृश्य select चुनें डेटा एक्सेस मोड ड्रॉप-डाउन बॉक्स में। मैंने पहले ही कर्मचारी बना लिया है HR . में तालिका Oracle डेटाबेस की स्कीमा, इसलिए चुनें HR.EmployeesData तालिका या दृश्य के नाम में ड्रॉप-डाउन बॉक्स जैसा कि नीचे चित्र में दिखाया गया है:
सशर्त विभाजन कॉन्फ़िगर करें
अब, एक शर्त के आधार पर एक्सेल के विभिन्न कार्यपत्रकों में डेटा निर्यात करने के लिए, हम सशर्त विभाजन परिवर्तन का उपयोग करेंगे। सशर्त विभाजन घटक को SSIS . से खींचें टूलबॉक्स से डेटा प्रवाह विंडो जैसा कि नीचे चित्र में दिखाया गया है।
मैंने पहले उल्लेख किया था, HR.EmployeeData . के डेटा का आउटपुट सशर्त विभाजन . में परिभाषित शर्त के आधार पर तालिका को एकाधिक कार्यपत्रकों में निर्यात किया जाएगा घटक।
सबसे पहले, हम ADO.Net स्रोत को सशर्त विभाजन परिवर्तन से जोड़ेंगे। ऐसा करने के लिए, कर्मचारी डेटा . के नीचे डेटा प्रवाह पथ पर नीले तीर पर क्लिक करें घटक और इसे नीचे की छवि में दिखाए गए अनुसार सशर्त विभाजन परिवर्तन पर खींचें।
अब हम सशर्त विभाजन परिवर्तन को कॉन्फ़िगर करेंगे। जैसा कि मैंने पहले उल्लेख किया है, हम HR.EmployeesData तालिका के डेटा को देशक्षेत्रनाम के मान के आधार पर विभाजित करेंगे। कॉलम और उन्हें अलग-अलग वर्कशीट में स्टोर करें।
ऐसा करने के लिए, सशर्त स्प्लिट ट्रांसफ़ॉर्मेशन एडिटर पर डबल-क्लिक करें . सशर्त विभाजन परिवर्तन संपादक निम्न चित्र में दिखाए अनुसार संवाद बॉक्स खुलेगा:
जैसा कि आप ऊपर की छवि में देख सकते हैं, सशर्त विभाजन परिवर्तन संपादक में तीन खंड होते हैं जो यह निर्धारित करते हैं कि डेटा को अगले घटकों में कैसे भेजा जाएगा।
अनुभाग ए :इस अनुभाग में, कॉलम . के अंतर्गत ADO.Net स्रोत घटक से प्राप्त आउटपुट कॉलम की फ़ोल्डर सूची सूचीबद्ध की जाएगी जिसका उपयोग डेटा को विभाजित करने के लिए शर्तों को परिभाषित करने के लिए किया जा सकता है।
अनुभाग बी :इस खंड में, विभिन्न कार्यों को सूचीबद्ध किया जाएगा जिनका उपयोग आउटपुट को अलग-अलग प्रारूप में परिवर्तित करने के लिए किया जा सकता है और डेटा को विभाजित करने के लिए शर्तों को परिभाषित करने के लिए उपयोग किया जा सकता है।
अनुभाग सी :इस खंड में, आप एक शर्त बना सकते हैं जो ADO.Net स्रोत के आउटपुट को कई परिणाम सेटों में विभाजित कर सकती है।
हम धारा-सी में शर्त जोड़ देंगे। तो पहले कॉलम नोड का विस्तार करें और देशक्षेत्र नाम . को खींचें कॉलम (सेक्शन ए) और इसे ग्रिड में छोड़ दें (सेक्शन सी) जैसा कि निम्न चित्र में दिखाया गया है:
इस उदाहरण के लिए, हम CountryRegionName . के आधार पर अपनी स्थिति को परिभाषित करेंगे कॉलम। "कनाडा" के कर्मचारियों की सूची कनाडा . नामक एक्सेल वर्कशीट में संग्रहीत की जाएगी और ऑस्ट्रेलिया के कर्मचारियों की सूची ऑस्ट्रेलिया . में संग्रहीत की जाएगी कार्यपत्रक शर्त के आधार पर, हम बराबर (==) . का उपयोग करने जा रहे हैं ऑपरेटर। समीकरण इस प्रकार होगा:
[CountryRegionName]=="ऑस्ट्रेलिया"[CountryRegionName]=="कनाडा"
शर्तें निर्धारित होने के बाद, ठीक click क्लिक करें संवाद बॉक्स को सहेजने और बंद करने के लिए।
Excel गंतव्य को कॉन्फ़िगर करना
अब जब हमने डेटा प्रवाह को कई पथों में विभाजित कर दिया है, तो हम प्रत्येक पथ के लिए एक गंतव्य जोड़ने जा रहे हैं। जैसा कि हम विभिन्न एक्सेल वर्कशीट में टेबल डेटा निर्यात करने जा रहे हैं, इसलिए हमें दो एक्सेल डेस्टिनेशन बनाने की जरूरत है। ऐसा करने के लिए, एक्सेल कनेक्शन को SSIS टूलबॉक्स, . से खींचें और छोड़ें जैसा कि नीचे चित्र में दिखाया गया है:
एक्सेल गंतव्य को कॉन्फ़िगर करने के लिए, एक्सेल गंतव्य पर डबल-क्लिक करें। एक्सेल कनेक्शन प्रबंधक डायलॉग बॉक्स खुलेगा। उस डायलॉग बॉक्स में, नया click क्लिक करें जैसा कि निम्न चित्र में दिखाया गया है:
एक्सेल कनेक्शन मैनेजर नामक एक अन्य डायलॉग बॉक्स खुलेगा। इस डायलॉग बॉक्स में, हम एक पथ प्रदान करेंगे जहां एक्सेल फाइल स्थित है। मैंने कर्मचारी डेटा . बनाया है मेरे डेस्कटॉप पर फ़ाइल। हम फाइल सिस्टम से गुजरेंगे और फाइल का चयन करेंगे और ठीक . पर क्लिक करेंगे जैसा कि नीचे चित्र में दिखाया गया है:
अब, डेटा एक्सेस मोड . में ड्रॉप-डाउन बॉक्स में, तालिका या दृश्य का चयन करें और एक्सेल शीट का नाम . में ड्रॉप-डाउन बॉक्स में, ऑस्ट्रेलिया$, . चुनें जैसा कि नीचे चित्र में दिखाया गया है:
अब मैं डेटा पथ को कॉन्फ़िगर करने जा रहा हूं। ऐसा करने के लिए नीले डेटा पथ तीर को सशर्त विभाजन परिवर्तन से ऑस्ट्रेलिया कर्मचारी . पर खींचें एक्सेल गंतव्य घटक। जब आप डेटा पथ को एक्सेल गंतव्य से जोड़ते हैं, तो आउटपुट के लिए एक डायलॉग बॉक्स दिखाई देगा जिसे हम चयनित गंतव्य की ओर निर्देशित करना चाहते हैं। डायलॉग बॉक्स इस तरह दिखेगा:
डायलॉग बॉक्स में ड्रॉप-डाउन सूची में सभी आउटपुट शामिल हैं, जो सशर्त विभाजन परिवर्तन से उपलब्ध है। इस मामले में, ड्रॉप डाउन सूची में दो विकल्प शामिल होंगे।
- ऑस्ट्रेलिया
- कनाडा
- डिफ़ॉल्ट आउटपुट
एक्सेल कॉलम के साथ टेबल कॉलम को मैप करने के लिए एक्सेल डेस्टिनेशन कंपोनेंट पर डबल-क्लिक करें। ऐसा करने के लिए, एक्सेल गंतव्य घटक पर और एक्सेल गंतव्य संपादक . में डबल-क्लिक करें संवाद बॉक्स में, मानचित्रण . चुनें डायलॉग बॉक्स के बाएँ फलक पर स्थित विकल्प, जैसा कि नीचे दी गई छवि में दिखाया गया है:
उपरोक्त छवि में, इनपुट कॉलम Oracle तालिका और गंतव्य स्तंभ . का स्तंभ नाम है एक्सेल शीट का कॉलम नाम होगा। इस डेमो में, टेबल और एक्सेल फाइल के कॉलम का नाम समान है। तो एक्सेल गंतव्य संपादक स्वचालित रूप से इनपुट और आउटपुट कॉलम मैप करेगा।
इसी तरह, मैं कनाडा . के लिए डेटा प्रवाह कॉन्फ़िगरेशन प्रक्रिया को दोहराऊंगा डेटा पथ।
- हमें कनाडा select का चयन करना होगा इनपुट आउटपुट चयन . में संवाद बॉक्स, जैसा कि नीचे दी गई छवि में दिखाया गया है।
- एक्सेल गंतव्य संपादन . में आर, चुनें कनाडा$ एक्सेल शीट का नाम . में ड्रॉप-डाउन बॉक्स जैसा कि नीचे चित्र में दिखाया गया है।
एक बार सभी कॉन्फ़िगरेशन पूर्ण हो जाने के बाद, संपूर्ण डेटा प्रवाह कार्य निम्न जैसा दिखेगा:
एसएसआईएस पैकेज का परीक्षण
अब पैकेज को चलाते हैं और देखते हैं कि यह कैसे काम करता है। ऐसा करने के लिए, प्रारंभ करें . क्लिक करें मेनू बार पर बटन। यदि पैकेज सफलतापूर्वक निष्पादन पूरा करता है, तो यह निम्न जैसा दिखना चाहिए:
जैसा कि ऊपर की छवि इंगित करती है, पैकेज ने ऑस्ट्रेलिया क्षेत्र . में 1 रिकॉर्ड डाला वर्कशीट और 2 रिकॉर्ड कनाडा क्षेत्र . में वर्कशीट।
सारांश
इस लेख में, हमने एकल डेटा प्रवाह के साथ एक SSIS पैकेज बनाया है। हमने डेटा को कई पथों में विभाजित करने के लिए डेटा प्रवाह में एक सशर्त विभाजन परिवर्तन जोड़ा। फिर हमने उनमें से प्रत्येक डेटा पथ को अलग-अलग एक्सेल वर्कशीट पर निर्देशित किया।
संदर्भ :
एक्सेल फ़ाइल की एकाधिक कार्यपुस्तिकाओं में SQL डेटा निर्यात करें।
उपयोगी टूल:
Devart SSIS डेटा फ़्लो घटक - आपको SQL सर्वर एकीकरण सेवाओं के माध्यम से डेटाबेस और क्लाउड डेटा को एकीकृत करने की अनुमति देता है।
Devart ODBC ड्राइवर्स - ODBC-आधारित अनुप्रयोगों के लिए उच्च-प्रदर्शन और सुविधा संपन्न कनेक्टिविटी समाधान प्रदान करते हैं।