Import von CSV zu MySQL mit VB.NET
Guten Tag!
Ich versuche für ein kleines Projekt, eine CSV Datei mit VB.net in eine MySQL Datenbank einzubinden.
Mein Programmcode sieht bisher so aus ..
Die Tabelle wird einmal durch den auskommentierten CommandText erstellt, aber beim Aufruf mit der LOAD DATA ... Zeile läuft das Programm einige Zeit und bricht dann mit dem Fehler "Fatal error encountered attempting to read the resultset." ab. Damit kann ich leider gar nichts anfangen und ich steh, was die Fehlersuche angeht, absolut auf dem Schlauch.
Auch wenn ich versuche, die CSV Datei in eine Tabelle zu importieren, in der ich diese zuvor von Hand über phpmyadmin eingebunden habe, kommt diese Fehlermeldung.
Liegt der Fehler am CommandText oder wo?
Freundliche Grüße
Ich versuche für ein kleines Projekt, eine CSV Datei mit VB.net in eine MySQL Datenbank einzubinden.
Mein Programmcode sieht bisher so aus ..
Dim TV_Tabelle As String
TV_Tabelle = "C:\Tabelle.csv"
Dim con As New MySqlConnection
Dim cmd As New MySqlCommand
con.ConnectionString = "server=" & Public_DBServerAdresse & ";uid=" & Public_DBServerClient & ";pwd=" & Public_DBServerPasswort & ";database=" & Public_DBServerDatenbank & ";port=" & Public_DBServerPort
cmd.Connection = con
cmd.CommandText = "LOAD DATA LOCAL INFILE '" & TV_Tabelle & "' INTO TABLE " & GetFileName(TV_Tabelle) & " FIELDS TERMINATED BY ';'"
'cmd.CommandText = "CREATE TABLE" & MySpace & GetFileName(TV_Tabelle) & MySpace & "(Client VARCHAR(50))"
Try
con.Open()
cmd.ExecuteNonQuery()
con.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Die Tabelle wird einmal durch den auskommentierten CommandText erstellt, aber beim Aufruf mit der LOAD DATA ... Zeile läuft das Programm einige Zeit und bricht dann mit dem Fehler "Fatal error encountered attempting to read the resultset." ab. Damit kann ich leider gar nichts anfangen und ich steh, was die Fehlersuche angeht, absolut auf dem Schlauch.
Auch wenn ich versuche, die CSV Datei in eine Tabelle zu importieren, in der ich diese zuvor von Hand über phpmyadmin eingebunden habe, kommt diese Fehlermeldung.
Liegt der Fehler am CommandText oder wo?
Freundliche Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 214025
Url: https://administrator.de/contentid/214025
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
10 Kommentare
Neuester Kommentar
Hallo ForgottenRealm,
probiers mal mit
kann auch sein das du LINES TERMINATED BY '\n' noch in LINES TERMINATED BY '\r\n' ändern musst.
eventuell musst die LOAD DATA LOCAL Funktion in der MySQL-Konfiguration erst noch freischalten:
http://stackoverflow.com/questions/10762239/enable-load-data-local-infi ...
Grüße Uwe
probiers mal mit
cmd.CommandText = "LOAD DATA LOCAL INFILE '" & TV_Tabelle.Replace("\","/") & "' INTO TABLE " & GetFileName(TV_Tabelle) & " FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'"
eventuell musst die LOAD DATA LOCAL Funktion in der MySQL-Konfiguration erst noch freischalten:
http://stackoverflow.com/questions/10762239/enable-load-data-local-infi ...
Grüße Uwe
Bin jetzt auch nicht so im Thema drin, aber die Überschriftenzeile kannst mit IGNORE 1 LINES zusätzlich im Command überspringen, um nur die Daten zu importieren.
Schau dir mal folgendes PDF zu dem Thema an.
Grüße Uwe
Schau dir mal folgendes PDF zu dem Thema an.
Grüße Uwe
Steht alles sehr gut erklärt in der Doku:
http://dev.mysql.com/doc/refman/5.1/de/load-data.html
kurzer Auszug:
Grüße Uwe
http://dev.mysql.com/doc/refman/5.1/de/load-data.html
kurzer Auszug:
Der Backslash wird bei MySQL als Escape-Zeichen in Strings verwendet. Insofern müssen Sie, um FIELDS ESCAPED BY '\\' zu schreiben, zwei Backslashes angeben, damit der Wert als ein Backslash interpretiert wird.
Grüße Uwe
das meinte ich damit nicht, meinte damit das du in dem csv-File alle Backslash's mit Suchen und Ersetzen verdoppelst.
Normalerweise sollte
Auszug aus der Doku:
kann es hier leider momentan nicht testen. Könnte natürlich sein das der MySQL-Interpreter für .Net das anders interpretiert. Muss ich später noch mal genauer nachsehen.
Grüße Uwe
Normalerweise sollte
ESCAPED BY ''
aber funktionieren.Auszug aus der Doku:
If the FIELDS ESCAPED BY character is empty, escape-sequence interpretation does not occur.
Grüße Uwe
du kannst mal versuchen ob es mit
habe ich noch gefunden:
ESCAPED BY '\N'
funktioniert ...wichtig ist das große "N"habe ich noch gefunden:
A NULL value indicates the absence of a value or an unknown value, which is difficult to represent literally in a data file. For import and export purposes, MySQL use the convention of representing NULL by \N. For LOAD DATA INFILE, a \N appearing unquoted by itself as a column value is interpreted as NULL. MySQL users sometimes assume that an empty value in an input file will be handled as a NULL value, but that isn't true. For SELECT … INTO OUTFILE, MySQL writes NULL values to the output file as \N.