कोई SQL XML फ़ाइल प्राप्त करने वाले डुप्लिकेट रिकॉर्ड्स को कैसे रोकें, मुझे एक दैनिक XML फ़ाइल प्राप्त होती है जिसमें हजारों रिकॉर्ड होते हैं, प्रत्येक व्यवसाय लेनदेन होता है जिसे मुझे रिपोर्टिंग और बिलिंग में उपयोग के लिए किसी आंतरिक डेटाबेस में स्टोर करने की आवश्यकता होती है । मैं इस धारणा के तहत था कि प्रत्येक दिन की फ़ाइल में केवल अनन्य रिकॉर्ड होते थे, लेकिन उन्होंने पाया है कि अद्वितीय की मेरी परिभाषा प्रदाता के समान नहीं है।कोई प्राथमिक कुंजी
वर्तमान डेटा जो इस डेटा को आयात करता है वह एक सी # .Net 3.5 कंसोल एप्लिकेशन है, यह ऐसा करता है कि SQL Server 2008 डेटाबेस तालिका में SqlBulkCopy का उपयोग कर जहां कॉलम एक्सएमएल रिकॉर्ड्स की संरचना से मेल खाते हैं। प्रत्येक रिकॉर्ड में केवल 100 से अधिक फ़ील्ड होते हैं, और डेटा में कोई प्राकृतिक कुंजी नहीं होती है, या ऐसे फ़ील्ड जो मैं एक समग्र कुंजी अंत के रूप में समझने के साथ आ सकता हूं, नल को अनुमति देने के लिए भी। वर्तमान में तालिका में कई अनुक्रमणिका हैं, लेकिन कोई प्राथमिक कुंजी नहीं है।
असल में पूरी पंक्ति को अद्वितीय होना आवश्यक है। यदि एक फ़ील्ड अलग है, तो यह सम्मिलित करने के लिए पर्याप्त मान्य है। मैंने पूरी पंक्ति का एमडी 5 हैश बनाने, डेटाबेस में डालने और एसकब्लूल्ककॉपी को पंक्ति डालने से रोकने के लिए बाधा का उपयोग करके देखा, लेकिन मुझे नहीं लगता कि एमडी 5 हैश को बल्ककॉपी ऑपरेशन में कैसे प्राप्त किया जाए और मैं नहीं हूं सुनिश्चित करें कि पूरा ऑपरेशन विफल हो जाएगा और यदि कोई रिकॉर्ड विफल हुआ है, या यदि यह जारी रहेगा तो वापस रोल करें।
फ़ाइल में बहुत बड़ी संख्या में रिकॉर्ड्स हैं, जो एक्सएमएल में पंक्ति से पंक्ति में जा रहे हैं, डेटाबेस के लिए सभी क्षेत्रों से मेल खाने वाले रिकॉर्ड के लिए पूछताछ करते हैं, और फिर डालने का निर्णय लेना वास्तव में एकमात्र तरीका है जिसे मैं कर सकता हूं इस। मैं बस उम्मीद कर रहा था कि आवेदन पूरी तरह से फिर से लिखना न पड़े, और थोक प्रतिलिपि ऑपरेशन बहुत तेज है।
क्या किसी को प्राथमिक कुंजी के बिना डुप्लिकेट पंक्तियों को रोकने के दौरान एसकब्लूल्ककॉपी का उपयोग करने का कोई तरीका पता है? या ऐसा करने के लिए एक अलग तरीके के लिए कोई सुझाव?
इसके अतिरिक्त, थोक आयात (इसके तेज़) – CResults
@CResults के बाद तक अपनी स्टेजिंग तालिका में इंडेक्स न जोड़ें: हाँ, उल्लेख किया जाना चाहिए कि ... – gbn
ठीक है कि निश्चित रूप से समझ में आता है और इसे कार्यान्वित करना आसान है। धन्यवाद। – kscott