2011-06-24 39 views
1

我在vb.net小應用快速插入數據到遠程MySQL服務器在vb.net

我有一個MSACCESS表,其具有約20,000條記錄,

現在

,我想插入這些記錄到MySQL的遠程服務器,

我想爲下面的代碼,它需要大約3-4個小時來插入數據,

誰能告訴我插入數據的速度更快的方式,我會很高興..

DST在代碼由具有從MS Access

所有記錄對於i爲整數= 0要dst.Tables(0).Rows.Count - 1

mycmd.Connection = mycn 

str = "INSERT INTO tblstudentresults(department_desc, grade, roll_no, name, course_code, course_desc, examination_type, total_marks, obtained_marks)" 
/*'str = str & " VALUES('" & cname & "','" & sdr("grade").ToString() & "','" & sdr("st_code").ToString() & "','" & sdr("stName").ToString() & "','" & sdr("Subject_code").ToString() & "','" & sdr("Subject").ToString() & "','" & sdr("ExamTitle").ToString() & "','" & sdr("Maxmark").ToString() & "','" & sdr("score").ToString() & "')" -- Added non-VB comment here to improve readability */ 
str = str & " VALUES('" & cname & "', '" & dst.Tables(0).Rows(i)("grade").ToString() & "', '" & dst.Tables(0).Rows(i)("st_code").ToString() & "', '" & dst.Tables(0).Rows(i)("stName").ToString() & "', '', '" & dst.Tables(0).Rows(i)("Subject").ToString() & "', '" & dst.Tables(0).Rows(i)("ExamTitle").ToString() & "', '" & dst.Tables(0).Rows(i)("Maxmark").ToString() & "', '" & dst.Tables(0).Rows(i)("score").ToString() & "')" 
mycmd.CommandText = str 
mycmd.ExecuteNonQuery() 

next 
+1

如果您發佈的代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊「代碼sam編輯器工具欄上的「ples」按鈕('{}')可以很好地格式化和語法突出顯示它! –

回答

1

它可能更快構建multiple-row insert在一個大的字符串(或者也許塊,說500行),然後運行整個INSERT語句中單呼,東西大致如下所示:

Dim firstRow as Boolean = True 
str = "INSERT INTO tblstudentresults(...) VALUES" 

For i As Integer = 0 To dst.Tables(0).Rows.Count - 1 

    ' Only insert comma after first row, so we don't have comma at the end. 
    If Not firstRow Then str = str & "," 

    str = str & "('" & cname & "','" ... 

    firstRow = False 

Next 

mycmd.Connection = mycn 
mycmd.CommandText = str 
mycmd.ExecuteNonQuery() 
相關問題