Daten aus Excelliste in MySQL speichern

  • VB.NET

    Daten aus Excelliste in MySQL speichern

    Schönen guten Abend,

    ich suche eine Möglichkeit, eine Excelliste in einer MySQL Datenbank zu speichern. Ansich geht das mit dem unten ersichtlichen Code, aber das übergeben an die Datenbank dauert "sehr" lange (ca.9 Minuten für 16000 Datensätze)

    Kann man das ganze irgendwie "gesamt" an die Datenbank sende, damit es schneller geht? Derzeit gehe ich ja Zeile für zeile durch ;(

    Ich bin für jeden Tip sehr Dankbar :)

    VB.NET-Quellcode

    1. Dim dt As New DataTable
    2. Using cn As New System.Data.OleDb.OleDbConnection
    3. Dim Builder As New OleDbConnectionStringBuilder With _
    4. { _
    5. .DataSource = bereitschaft, _
    6. .Provider = "Microsoft.ACE.OLEDB.12.0" _
    7. }
    8. Builder.Add("Extended Properties", "Excel 12.0; IMEX=1;HDR=Yes;")
    9. cn.ConnectionString = Builder.ConnectionString
    10. cn.Open()
    11. Dim SchemaTable As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
    12. Dim tab As String = SchemaTable.Rows(0).Item(2).ToString
    13. tab = tab.Replace("'", "")
    14. Using cmd As OleDbCommand = New OleDbCommand With {.Connection = cn}
    15. cmd.CommandText = "SELECT * FROM [" & tab & "]"
    16. Dim dr As System.Data.IDataReader = cmd.ExecuteReader
    17. dt.Load(dr)
    18. DataGridView1.DataSource = dt
    19. End Using
    20. End Using
    21. Dim dt_fertig As New DataTable
    22. For a = 0 To DataGridView1.Columns.Count - 1
    23. dt_fertig.Columns.Add(DataGridView1.Columns(a).Name)
    24. Next
    25. For a = 0 To DataGridView1.Rows.Count - 2
    26. Dim plz1 As String = DataGridView1.Rows(a).Cells(1).Value.ToString
    27. If plz1.Length = 4 Then plz1 = "0" & plz1
    28. Dim plz2 As String = DataGridView1.Rows(a).Cells(2).Value.ToString
    29. If plz2.Length = 4 Then plz2 = "0" & plz2
    30. ' Dim dat As String = DataGridView1.Rows(a).Cells(7).Value.ToString
    31. dt_fertig.Rows.Add(DataGridView1.Rows(a).Cells(0).Value.ToString, _
    32. plz1, plz2, _
    33. DataGridView1.Rows(a).Cells(3).Value.ToString, _
    34. DataGridView1.Rows(a).Cells(4).Value.ToString, _
    35. DataGridView1.Rows(a).Cells(5).Value.ToString, _
    36. DataGridView1.Rows(a).Cells(6).Value.ToString, _
    37. DataGridView1.Rows(a).Cells(7).Value.ToString.Substring(0, 10), _
    38. DataGridView1.Rows(a).Cells(8).Value.ToString, _
    39. DataGridView1.Rows(a).Cells(9).Value.ToString)
    40. Next
    41. DataGridView2.DataSource = dt_fertig
    42. ListBox1.Items.Clear()
    43. ListBox2.Items.Clear()
    44. For a = 0 To DataGridView2.Rows.Count - 1
    45. If ListBox1.Items.Contains(DataGridView2.Rows(a).Cells(3).Value.ToString) Then
    46. Else
    47. ListBox1.Items.Add(DataGridView2.Rows(a).Cells(3).Value.ToString)
    48. End If
    49. Next
    50. '### hier werden die Daten in die MySQL Datenbank geschrieben
    51. Dim conn As New MySqlConnection()
    52. conn.ConnectionString = My.Settings.mysql
    53. Dim myAdapter As New MySqlDataAdapter
    54. For a = 0 To DataGridView2.Rows.Count - 1
    55. conn.Open()
    56. Dim gebiet As String = "'" & DataGridView2.Rows(a).Cells(0).Value.ToString & "'"
    57. Dim plzv As String = "'" & DataGridView2.Rows(a).Cells(1).Value.ToString & "'"
    58. Dim plzb As String = "'" & DataGridView2.Rows(a).Cells(2).Value.ToString & "'"
    59. Dim fbkt As String = "'" & DataGridView2.Rows(a).Cells(3).Value.ToString & "'"
    60. Dim tname As String = "'" & DataGridView2.Rows(a).Cells(4).Value.ToString & "'"
    61. Dim fregio As String = "'" & DataGridView2.Rows(a).Cells(5).Value.ToString & "'"
    62. Dim rname As String = "'" & DataGridView2.Rows(a).Cells(6).Value.ToString & "'"
    63. Dim datum As String = "'" & DataGridView2.Rows(a).Cells(7).Value.ToString & "'"
    64. Dim tag As String = "'" & DataGridView2.Rows(a).Cells(8).Value.ToString & "'"
    65. Dim prüfdatum As String = "'" & DataGridView2.Rows(a).Cells(9).Value.ToString & "'"
    66. gebiet = gebiet (vbLf, "")
    67. plzv = plzv .Replace(vbLf, "")
    68. plzb = plzb.Replace(vbLf, "")
    69. fbkt = fbk.Replace(vbLf, "")
    70. fregio = fregio.Replace(vbLf, "")
    71. rname = rname.Replace(vbLf, "")
    72. datum = datum.Replace(vbLf, "")
    73. tag = tag.Replace(vbLf, "")
    74. prüfdatum = prüfdatum.Replace(vbLf, "")
    75. tname = tname.Replace(vbLf, "")
    76. Dim sqlquery = "INSERT INTO `clst`(`gebiet`, `plzv`, `plzb`, `fbkt`, `tname`, `fregio`, `rname`, `datum`, `tag`, `prüfdatum`) VALUES (" & _
    77. gebiet & "," & plzv & "," & plzb & "," & fbkt & "," & tname & "," & fregio & "," & rname & "," & datum & "," & tag & "," & prüfdatum & ")"
    78. Dim myCommand As New MySqlCommand()
    79. myCommand.Connection = conn
    80. myCommand.CommandText = sqlquery
    81. myAdapter.SelectCommand = myCommand
    82. Dim myData As MySqlDataReader
    83. myData = myCommand.ExecuteReader()
    84. conn.Close()
    85. Next a