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

डेटाटेबल को MySQL में बल्क कॉपी करें (System.Data.SqlClient.SqlBulkCopy के समान)

निराधार मान्यताओं के आधार पर संभावित समाधान से इंकार न करें। मैंने अभी एक System.Data.DataTable . से 100,000 पंक्तियों के सम्मिलन का परीक्षण किया है एक मानक MySqlDataAdapter#Update() . का उपयोग करके एक MySQL तालिका में एक Transaction के अंदर . इसे लगातार चलने में लगभग 30 सेकंड का समय लगा:

using (MySqlTransaction tran = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        cmd.Connection = conn;
        cmd.Transaction = tran;
        cmd.CommandText = "SELECT * FROM testtable";
        using (MySqlDataAdapter da = new MySqlDataAdapter(cmd))
        {
            da.UpdateBatchSize = 1000;
            using (MySqlCommandBuilder cb = new MySqlCommandBuilder(da))
            {
                da.Update(rawData);
                tran.Commit();
            }
        }
    }
}

(मैंने UpdateBatchSize . के लिए कुछ अलग-अलग मानों की कोशिश की है लेकिन बीता हुआ समय पर उनका कोई खास असर नहीं दिख रहा था।)

इसके विपरीत, निम्न कोड MySqlBulkLoader का उपयोग कर रहा है चलने में केवल 5 या 6 सेकंड का समय लगा ...

string tempCsvFileSpec = @"C:\Users\Gord\Desktop\dump.csv";
using (StreamWriter writer = new StreamWriter(tempCsvFileSpec))
{
    Rfc4180Writer.WriteDataTable(rawData, writer, false);
}
var msbl = new MySqlBulkLoader(conn);
msbl.TableName = "testtable";
msbl.FileName = tempCsvFileSpec;
msbl.FieldTerminator = ",";
msbl.FieldQuotationCharacter = '"';
msbl.Load();
System.IO.File.Delete(tempCsvFileSpec);

... डेटाटेबल से 100,000 पंक्तियों को अस्थायी CSV फ़ाइल में डंप करने का समय (यह ), उस फ़ाइल से बल्क-लोडिंग, और बाद में फ़ाइल को हटाना।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php . के साथ एक mysql डेटाबेस से kml फ़ाइल बनाना

  2. MySQL LIKE क्लॉज में उपयोगकर्ता चर का उपयोग कैसे करें?

  3. mysql दिनांक में पार्सिंग स्ट्रिंग

  4. DAYOFMONTH () उदाहरण – MySQL

  5. एडब्ल्यूएस ईकेएस में तैनात एक MySQL डेटाबेस को प्रारंभ करना