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

मेरे पास एक टैग टेबल है। LINQ का उपयोग करके बल्क इंसर्ट कैसे करें?

LINQ एक क्वेरी है प्रौद्योगिकी, लेकिन मुझे लगता है कि हम जानते हैं कि आपका क्या मतलब है; हो सकता है कि आप थोड़ा और विशिष्ट होना चाहें कि यह LINQ-to-SQL या Entity Framework है या नहीं। आप यह भी स्पष्ट करना चाहेंगे कि आपके मामले में "थोक" का क्या अर्थ है... 10-100 रिकॉर्ड के लिए आप 10,000 रिकॉर्ड्स के लिए एक अलग उत्तर का उपयोग कर सकते हैं (जहां SqlBulkCopy एक स्टेजिंग टेबल में और डीबी पर आयात करने के लिए एक संग्रहित प्रक्रिया सबसे अच्छा विचार होगा)।

अपेक्षाकृत कम संख्या के लिए - रिकॉर्ड खोजने के लिए बस अपने ORM टूल का उपयोग करें - उदाहरण के लिए LINQ-to-SQL (शायद एक फैले हुए क्रमिक लेनदेन के साथ) - और चित्रण के लिए C# का उपयोग करना (लूप और कैश दिखाने के लिए अपडेट किया गया मजबूत> ):

Dictionary<string,Tag> knownTags = new Dictionary<string,Tag>();
foreach(... your data ...) {
    Tag tag;
    if(!knownTags.TryGetValue(tagName, out tag)) {
        tag = ctx.Tags.SingleOrDefault(t => t.Name == tagName);
        if(tag == null) {
            tag = new Tag { Name = tagName };
            ctx.Tags.InsertOnSubmit(tag);
        }
        knownTags.Add(tagName, tag);
    }
    // insert video tag
}
ctx.SubmitChanges();

असल में, प्रदर्शन कारणों से मुझे आश्चर्य है कि यह उन अवसरों में से एक हो सकता है जहां प्राकृतिक कुंजी समझ में आती है - यानी Tag का उपयोग करें (varchar ) प्राथमिक कुंजी के रूप में, और इसे (विदेशी कुंजी के रूप में) VideoTags . में डुप्लिकेट करें - तो आपको Tag . में शामिल होने की आवश्यकता नहीं है टेबल हर समय।

यदि संख्याएँ बड़ी हैं, तो SqlBulkCopy . का उपयोग करना बहुत आसान है; बस डेटा को DataTable . में डालें और इसे ऊपर धकेलें, फिर TSQL में काम करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2008 समर्थन समाप्त हो रहा है। अब क्या?

  2. क्वेरी SQL सर्वर IN (NULL) के साथ काम नहीं कर रहा है

  3. जब डाउनलोड करने के लिए कोई फाइल नहीं है तो एसएसआईएस एफ़टीपी कार्य विफल होने से कैसे बचें?

  4. तालिका का स्कीमा नाम कैसे प्राप्त करें?

  5. FOR JSON PATH का उपयोग करके नेस्टेड JSON सरणियाँ बनाएँ