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

टेबल वैल्यूड पैरामीटर:छोटे टुकड़ों में डेटा भेजना

IEnumerable SqlDataRecord का उपयोग करने का एक उदाहरण
यह एक तरह से रिवर्स डेटारीडर की तरह काम करता है

सूचना मैं क्रमबद्ध। यह संकुल सूचकांक द्वारा है। इंडेक्स के विखंडन से लोड स्पीड बिल्कुल खत्म हो जाएगी। पहले कार्यान्वयन में इंसर्ट वैल्यू (बिना क्रमित) का उपयोग किया गया था और 12 घंटे के रन में यह संस्करण सचमुच 100x तेज है। मैं लोड के अंत में पीके और रीइंडेक्स के अलावा अन्य इंडेक्स को भी अक्षम करता हूं। लंबे समय में मुझे लगभग 500 पंक्तियाँ/सेकंड मिल रही हैं। आपका नमूना 1400/सेकंड बहुत अच्छा है। अगर आपको गिरावट नजर आने लगे तो देखने लायक चीजें।

public class DocFTSinXsCollection : List<DocFTSinX>, IEnumerable<SqlDataRecord>
{
    // used by TVP for fast insert
    private int sID;
    private IEnumerable<DocFTSinX> docFTSinXs;
    IEnumerator<SqlDataRecord> IEnumerable<SqlDataRecord>.GetEnumerator()
    {
        //todo fix the order in 3 to sID, wordID1, workID2
        var sdr = new SqlDataRecord(
        new SqlMetaData("wordID1", System.Data.SqlDbType.Int),
        new SqlMetaData("wordID2", System.Data.SqlDbType.Int),
        new SqlMetaData("sID", System.Data.SqlDbType.Int),
        new SqlMetaData("Delta", System.Data.SqlDbType.Int));
        foreach (DocFTSinX oh in docFTSinXs.OrderBy(x => x.Word1).ThenBy(x => x.Word2))
        {
            sdr.SetInt32(0, oh.Word1);
            sdr.SetInt32(1, oh.Word2);
            sdr.SetInt32(2, sID);
            sdr.SetInt32(3, (Int32)oh.Delta);
            yield return sdr;
        }
    }

    public DocFTSinXsCollection(int SID, IEnumerable<DocFTSinX> DocFTSinXs)
    {
        sID = SID;
        docFTSinXs = DocFTSinXs;
        //Debug.WriteLine("DocFTSinXsCollection DocFTSinXs " + DocFTSinXs.Count().ToString());
    }
}

विचार करने के लिए अन्य उपकरण हैं SQLBulkCopy .NET वर्ग और ड्रेपर।

ओपी ने पूछा कि बैचों में कैसे प्रदर्शन करना है।

 while (true)
 {
     // if no more break;
     // fill list or datatable with next 100000
     // send list or datatable to db
 }



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एडीओ के साथ सी # में कुशल एसक्यूएल सर्वर डेडलॉक हैंडलिंग कैसे प्राप्त करें?

  2. मैं SQL सर्वर में कैसे निर्धारित कर सकता हूं यदि कोई दिनांक समय सीमा दूसरे को ओवरलैप करती है?

  3. लॉगिन द्वारा अनुरोधित डेटाबेस परीक्षण नहीं खोल सकता। लॉगिन विफल रहा। उपयोगकर्ता 'xyz\ASPNET' के लिए लॉगिन विफल

  4. टीएसक्यूएल गतिशील एसक्यूएल से अस्थायी तालिका में चयन करें

  5. SQL सर्वर में Oracle के PRIOR द्वारा कनेक्ट का अनुकरण