पर स्थानांतरित करने का सबसे तेज़ तरीका क्या किसी को बाहरी उपयोगिता (यानी बीसीपी) का उपयोग कर के बिना SQL 2008 पर किसी तालिका में डेटा और एक्सेल टेबल (VBA Array) से डेटा प्राप्त करने का सबसे तेज़ तरीका पता है? ध्यान रखें कि मेरे डेटासेट आमतौर पर 6500-15000 पंक्तियां हैं, और लगभग 150-250 कॉलम हैं; और मैं एक स्वचालित वीबीए बैच स्क्रिप्ट के दौरान उनमें से 20-150 स्थानांतरित कर रहा हूं। VBA सरणी मेंएक्सेल टेबल डेटा को SQL 2008R2
विधि 1. पास मेज और (संग्रहीत प्रक्रिया पर भेज दें:
मैं एक एक्सेल तालिका (VBA) एसक्यूएल 2008 तक मैं उन नीचे सूचीबद्ध है से डेटा की बड़ी मात्रा प्राप्त करने के लिए कई तरीके की कोशिश की है एडीओ) - एसक्यूएल को भेजना धीमा है
विधि 2. डिस्कनेक्ट किए गए रिकॉर्डसेट को लोड करें, फिर सिंक करें। - एसक्यूएल बहुत धीमी
विधि 3. तालिका को वीबीए सरणी में रखें, सरणी और concatenate (delimiters का उपयोग करके) लूप हालांकि संग्रहीत प्रक्रिया को भेजें। - एसक्यूएल स्लोव को भेजना, लेकिन विधि 1 या 2. से तेज।
विधि 4. तालिका को वीबीए सरणी में रखें, सरणी और concatenate (delimiters का उपयोग करके) लूप हालांकि एडीओ रिकॉर्डसेट के साथ प्रत्येक पंक्ति रखें .addnew कमांड। - एसक्यूएल को बहुत तेजी से भेजना (विधियों 1-3 से लगभग 20 गुना तेज), लेकिन अब मुझे एक अलग प्रक्रिया का उपयोग करके उस डेटा को विभाजित करने की आवश्यकता होगी, जो महत्वपूर्ण प्रतीक्षा समय जोड़ देगा।
VBA सरणी में विधि 5. रखें मेज, एक्सएमएल में क्रमानुसार, VARCHAR के रूप में जमा की प्रक्रिया करने के लिए भेजने के लिए और संग्रहीत प्रक्रिया में XML निर्दिष्ट करें। एसक्यूएल को --Sending अविश्वसनीय रूप से धीमा (लगभग 100 बार तरीकों 1 या 2 की तुलना में धीमी)
कुछ भी मुझे याद आ रही?
-इंडेक्स कोई समस्या नहीं है क्योंकि मैं एक temp तालिका में लोड हो रहा हूं - लेकिन धन्यवाद, मैं इसके बारे में भूल गया था। निश्चित रूप से केवल एक कनेक्शन का उपयोग कर। एडीओ कमांड ऑब्जेक्ट के लिए, मैंने कोशिश की है लेकिन एसपी को पार करने की तुलना में यह गति में कोई अलग नहीं है। और हां, मैंने नए जोड़ने के माध्यम से लूपिंग के बाद केवल एक एडीओ अपडेट बैच जारी किया। .add नई विधि अभी तक सबसे तेज़ है, लेकिन केवल तभी जब कॉन्सट के साथ प्रयोग किया जाता है - जिसे बाद में पार्स किया जाना होगा। – cshenderson
मैं थोक लॉग रिकवरी मोड में देखूंगा। – cshenderson