vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Datatable in MySQL-DB speichern 
Autor: Chris7483
Datum: 12.01.10 11:56

Hallo,

ich suche eine effektive Möglichkeit einen Datatable in eine bestehende Tabelle einer MySQL-DB zu schreiben.
Mein Problem ist, dass ich bei 150 Spalten und ca. 10000 Zeilen schon 2 1/2 Minuten brauche.
Der Datatable kann aber leider bis zu 200 Spalten und 250000 Zeilen groß werden. (Daten kommen von einem Prüfstand im txt-Format)

Ich hatte gehofft, dass es eine Art "Bulk Copy" wie bei SQL gibt, oder mir jemand sagt wie ich den "LOAD DATA LOCAL INFILE"-Code unten zum laufen bekomme...
In der Zeile
oSqlCmd.ExecuteNonQuery()
bekomme ich immer einen Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."
Dabei sieht der Pfad zu der Datei so aus: D:/Test/XX/XXX1__11111111_XX111-11111111_X111.TXT
Scheinbar liegt der Fehler an den Unter- oder Bindestrichen?

Wenn ich einen anderen Pfad/Namen zum testen nehme (D:\test.txt), bekomme ich den Fehler "Packets larger than max_allowed_packet are not allowed.".
Um das zu beheben finde ich scheinbar die richtige Configdatei nicht. Oder muss ich den Server erst neu starten?

    Sub saveDataToSQL(ByVal file_name As String, ByVal destTablename As String)
        'file_name = "D:\test.txt"
        Dim oSqlCmd As New MySqlCommand
        oSqlCmd.Connection = MySqlConn
 
        oSqlCmd.CommandText = "LOAD DATA LOCAL INFILE '" & file_name.Replace( _
          "\", "/") & "' INTO TABLE datatable_" & destTablename & _
        " FIELDS TERMINATED BY '" & vbTab & "' LINES TERMINATED BY '" & _
        vbNewLine & "'"
 
        If MySqlConn.State = ConnectionState.Closed Then
            MySqlConn.Open()
        End If
 
        Try
        oSqlCmd.ExecuteNonQuery()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        MySqlConn.Close()
    End Sub
Bis jetzt mache ich es so:

    Sub saveDataToSQL(ByVal dataSource As DataTable, ByVal destTablename As _
      String)
        Dim oSqlCmd As New MySqlCommand
        oSqlCmd.Connection = MySqlConn
        Dim dsData As New DataSet
 
        If MySqlConn.State = ConnectionState.Closed Then
            MySqlConn.Open()
        End If
        oSqlCmd.CommandText = "SELECT * FROM datatable_" & destTablename
        Dim oDataAdapter As New MySqlDataAdapter(oSqlCmd)
        oDataAdapter.Fill(dsData)
 
        Dim tblData As New DataTable : tblData = dsData.Tables(0)
 
        For ctr = 0 To dataSource.Rows.Count - 1
            Dim oRow As DataRow = tblData.NewRow
            oRow.ItemArray = dataSource.Rows(ctr).ItemArray
            tblData.Rows.Add(oRow)
        Next
 
        Dim oCB As MySqlCommandBuilder
        oCB = New MySqlCommandBuilder(oDataAdapter)
        oCB.GetInsertCommand()
 
        oDataAdapter.Update(dsData)
 
        MySqlConn.Close()
 
    End Sub
Es ist bestimmt kein toller Stil oder hübsch, aber funktioniert mal bis jetzt.
Dauert wie gesagt nur das Update zu lange...

Wenn jemand helfen kann wäre ich sehr froh.

Gruß Chris
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Datatable in MySQL-DB speichern6.167Chris748312.01.10 11:56
Re: Datatable in MySQL-DB speichern3.667ModeratorFZelle12.01.10 14:35
Re: Datatable in MySQL-DB speichern3.684Chris748312.01.10 15:13
Re: Datatable in MySQL-DB speichern3.658Chris748312.01.10 16:48
Re: Datatable in MySQL-DB speichern3.614ModeratorFZelle12.01.10 19:38
Re: Datatable in MySQL-DB speichern3.594Chris748313.01.10 08:13
Re: Datatable in MySQL-DB speichern3.476ModeratorFZelle13.01.10 09:11
Re: Datatable in MySQL-DB speichern3.473Chris748313.01.10 09:27
Re: Datatable in MySQL-DB speichern3.481ModeratorFZelle13.01.10 14:42
Re: Datatable in MySQL-DB speichern3.484Chris748313.01.10 16:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel