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
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
- Dim dt As New DataTable
- Using cn As New System.Data.OleDb.OleDbConnection
- Dim Builder As New OleDbConnectionStringBuilder With _
- { _
- .DataSource = bereitschaft, _
- .Provider = "Microsoft.ACE.OLEDB.12.0" _
- }
- Builder.Add("Extended Properties", "Excel 12.0; IMEX=1;HDR=Yes;")
- cn.ConnectionString = Builder.ConnectionString
- cn.Open()
- Dim SchemaTable As DataTable = cn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing)
- Dim tab As String = SchemaTable.Rows(0).Item(2).ToString
- tab = tab.Replace("'", "")
- Using cmd As OleDbCommand = New OleDbCommand With {.Connection = cn}
- cmd.CommandText = "SELECT * FROM [" & tab & "]"
- Dim dr As System.Data.IDataReader = cmd.ExecuteReader
- dt.Load(dr)
- DataGridView1.DataSource = dt
- End Using
- End Using
- Dim dt_fertig As New DataTable
- For a = 0 To DataGridView1.Columns.Count - 1
- dt_fertig.Columns.Add(DataGridView1.Columns(a).Name)
- Next
- For a = 0 To DataGridView1.Rows.Count - 2
- Dim plz1 As String = DataGridView1.Rows(a).Cells(1).Value.ToString
- If plz1.Length = 4 Then plz1 = "0" & plz1
- Dim plz2 As String = DataGridView1.Rows(a).Cells(2).Value.ToString
- If plz2.Length = 4 Then plz2 = "0" & plz2
- ' Dim dat As String = DataGridView1.Rows(a).Cells(7).Value.ToString
- dt_fertig.Rows.Add(DataGridView1.Rows(a).Cells(0).Value.ToString, _
- plz1, plz2, _
- DataGridView1.Rows(a).Cells(3).Value.ToString, _
- DataGridView1.Rows(a).Cells(4).Value.ToString, _
- DataGridView1.Rows(a).Cells(5).Value.ToString, _
- DataGridView1.Rows(a).Cells(6).Value.ToString, _
- DataGridView1.Rows(a).Cells(7).Value.ToString.Substring(0, 10), _
- DataGridView1.Rows(a).Cells(8).Value.ToString, _
- DataGridView1.Rows(a).Cells(9).Value.ToString)
- Next
- DataGridView2.DataSource = dt_fertig
- ListBox1.Items.Clear()
- ListBox2.Items.Clear()
- For a = 0 To DataGridView2.Rows.Count - 1
- If ListBox1.Items.Contains(DataGridView2.Rows(a).Cells(3).Value.ToString) Then
- Else
- ListBox1.Items.Add(DataGridView2.Rows(a).Cells(3).Value.ToString)
- End If
- Next
- '### hier werden die Daten in die MySQL Datenbank geschrieben
- Dim conn As New MySqlConnection()
- conn.ConnectionString = My.Settings.mysql
- Dim myAdapter As New MySqlDataAdapter
- For a = 0 To DataGridView2.Rows.Count - 1
- conn.Open()
- Dim gebiet As String = "'" & DataGridView2.Rows(a).Cells(0).Value.ToString & "'"
- Dim plzv As String = "'" & DataGridView2.Rows(a).Cells(1).Value.ToString & "'"
- Dim plzb As String = "'" & DataGridView2.Rows(a).Cells(2).Value.ToString & "'"
- Dim fbkt As String = "'" & DataGridView2.Rows(a).Cells(3).Value.ToString & "'"
- Dim tname As String = "'" & DataGridView2.Rows(a).Cells(4).Value.ToString & "'"
- Dim fregio As String = "'" & DataGridView2.Rows(a).Cells(5).Value.ToString & "'"
- Dim rname As String = "'" & DataGridView2.Rows(a).Cells(6).Value.ToString & "'"
- Dim datum As String = "'" & DataGridView2.Rows(a).Cells(7).Value.ToString & "'"
- Dim tag As String = "'" & DataGridView2.Rows(a).Cells(8).Value.ToString & "'"
- Dim prüfdatum As String = "'" & DataGridView2.Rows(a).Cells(9).Value.ToString & "'"
- gebiet = gebiet (vbLf, "")
- plzv = plzv .Replace(vbLf, "")
- plzb = plzb.Replace(vbLf, "")
- fbkt = fbk.Replace(vbLf, "")
- fregio = fregio.Replace(vbLf, "")
- rname = rname.Replace(vbLf, "")
- datum = datum.Replace(vbLf, "")
- tag = tag.Replace(vbLf, "")
- prüfdatum = prüfdatum.Replace(vbLf, "")
- tname = tname.Replace(vbLf, "")
- Dim sqlquery = "INSERT INTO `clst`(`gebiet`, `plzv`, `plzb`, `fbkt`, `tname`, `fregio`, `rname`, `datum`, `tag`, `prüfdatum`) VALUES (" & _
- gebiet & "," & plzv & "," & plzb & "," & fbkt & "," & tname & "," & fregio & "," & rname & "," & datum & "," & tag & "," & prüfdatum & ")"
- Dim myCommand As New MySqlCommand()
- myCommand.Connection = conn
- myCommand.CommandText = sqlquery
- myAdapter.SelectCommand = myCommand
- Dim myData As MySqlDataReader
- myData = myCommand.ExecuteReader()
- conn.Close()
- Next a