Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Import von CSV zu MySQL mit VB.NET

Frage Entwicklung Visual Studio

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

12.08.2013, aktualisiert 13.08.2013, 3140 Aufrufe, 10 Kommentare, 1 Danke

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 ..

01.
Dim TV_Tabelle As String 
02.
TV_Tabelle = "C:\Tabelle.csv" 
03.
 
04.
Dim con As New MySqlConnection 
05.
Dim cmd As New MySqlCommand 
06.
 
07.
con.ConnectionString = "server=" & Public_DBServerAdresse & ";uid=" & Public_DBServerClient & ";pwd=" & Public_DBServerPasswort & ";database=" & Public_DBServerDatenbank & ";port=" & Public_DBServerPort 
08.
 
09.
cmd.Connection = con 
10.
 
11.
 
12.
cmd.CommandText = "LOAD DATA LOCAL INFILE '" & TV_Tabelle & "' INTO TABLE " & GetFileName(TV_Tabelle) & " FIELDS TERMINATED BY ';'" 
13.
 
14.
'cmd.CommandText = "CREATE TABLE" & MySpace & GetFileName(TV_Tabelle) & MySpace & "(Client VARCHAR(50))" 
15.
 
16.
Try 
17.
 
18.
	con.Open() 
19.
 
20.
	cmd.ExecuteNonQuery() 
21.
 
22.
	con.Close() 
23.
 
24.
Catch ex As Exception 
25.
 
26.
 
27.
 
28.
	MsgBox(ex.Message) 
29.
 
30.
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
Mitglied: colinardo
12.08.2013, aktualisiert um 12:01 Uhr
Hallo ForgottenRealm,
probiers mal mit
01.
cmd.CommandText = "LOAD DATA LOCAL INFILE '" & TV_Tabelle.Replace("\","/") & "' INTO TABLE " & GetFileName(TV_Tabelle) & " FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'" 
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
Bitte warten ..
Mitglied: ForgottenRealm
12.08.2013 um 12:43 Uhr
Hallo colinardo,

vielen Dank für die schnelle Antwort!

Mit dem CommandText ging es direkt, ich denke mal der Fehler war das "\" statt "/" Zeichen

Der Import funktioniert klasse, allerdings habe ich jetzt noch das Problem, das beim Import die Feldnamen nicht mit übernommen werden.

Die Tabelle wurde von mir einmal erstellt, mit dem Feld "Clients", weitere Felder habe ich allerdings so nicht angelegt.

Gibt es eine einfache Möglichkeit, im CommandText anzugeben, dass nicht vorhandene Felder erstellt werden?

Ich muss leider gestehen, dass ich mich mit den SQL Commands nur sehr wenig auskenne

Alternativ kann ich mir auch eine Funktion erstellen, mit der ich die Feldnamen aus meiner CSV Tabelle auslese und die Tabelle auf dem MySQL Server vor dem Import mit allen benötigten Feldern erstelle.

Grüße
Bitte warten ..
Mitglied: colinardo
12.08.2013 um 13:14 Uhr
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
Bitte warten ..
Mitglied: ForgottenRealm
12.08.2013 um 15:38 Uhr
Ich schau mir das mal an, vielen Dank !
Bitte warten ..
Mitglied: ForgottenRealm
13.08.2013 um 15:11 Uhr
Moin

wie es scheint gibt es doch noch ein Problem ...

In einem Feld importiere ich einen Windows Dateipfad, aus diesem entfernt der Import allerdings sämtliche \ Zeichen.

Importiere ich die CSV Datei von Hand über PHPMyAdmin, so wird die Datei korrekt eingelesen.

Ich habs auch schonmal mit ENCLOSED BY ‘’ ESCAPED BY '' versucht, was mir aber nur einen Syntax Error gibt
Bitte warten ..
Mitglied: colinardo
14.08.2013 um 09:42 Uhr
Steht alles sehr gut erklärt in der Doku:
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
Bitte warten ..
Mitglied: ForgottenRealm
14.08.2013 um 11:23 Uhr
Moin

Mein CommandText sieht nun so aus

01.
cmd.CommandText = "LOAD DATA LOCAL INFILE '" & TV_Tabelle.Replace("\", "/") & "' INTO TABLE " & GetFileName(TV_Tabelle) & " FIELDS TERMINATED BY ';' ENCLOSED BY '' ESCAPED BY '\\' IGNORE 1 LINES"
Mit '\\' hatte ich es auch schon probiert, allerdings ohne Erfolg. Das Feld mit dem Windows Pfad enthält nach wie vor keine \.

Grüße
Bitte warten ..
Mitglied: colinardo
14.08.2013, aktualisiert um 11:41 Uhr
das meinte ich damit nicht, meinte damit das du in dem csv-File alle Backslash's mit Suchen und Ersetzen verdoppelst.
Normalerweise sollte ESCAPED BY '' aber funktionieren.
Auszug aus der Doku:
If the FIELDS ESCAPED BY character is empty, escape-sequence interpretation does not occur. 
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
Bitte warten ..
Mitglied: colinardo
14.08.2013, aktualisiert um 11:53 Uhr
du kannst mal versuchen ob es mit 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.
Bitte warten ..
Mitglied: ForgottenRealm
14.08.2013 um 12:34 Uhr
Hallo Uwe

ich glaube, ich habs mehr oder wenige durch einen Zufall rausbekommen.

Beim Import über phpmyadmin sind die Felder für ENCLOSED und ESCAPED mit einem Zeichen gefüllt, was ich bisher nie geändert habe. Die einzige Anpassung die ich vorgenommen hatte war, das Trennzeichen zu ändern und der Import (von Hand wohl gemerkt) ging wunderbar.

Ich dachte, in den Feldern seien zwei ' zu sehen, dies war allerdings ein ".

Dieses Zeichen habe ich statt den\\ in die ESCAPED BY ' " ' Regel eingebunden und siehe da, es funktioniert alles

Deswegen ging wohl auch der Import von Hand immer, da dort richtigerweise ein " drin stand.

Vielen Dank auf jeden Fall für deine Hilfe !

Grüße
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL Csv Datei Import
gelöst Frage von bytetixDatenbanken2 Kommentare

Hi zusammen, also vorab, ich bin eig. kein SQL progger, versuche mich aber gerade an einer eigentlich kleinen Sache. ...

Datenbanken
Import CSV in MYSQL
gelöst Frage von schneerunzelDatenbanken3 Kommentare

Hallo zusammen, ich versuche gerade die Daten einer Vereinsverwaltung in eine neu zu überführen. Dabei tauchen einige Probleme auf. ...

VB for Applications
Import von csv Dateien
Frage von KurinoKiVB for Applications6 Kommentare

Hallo, ich verwende bereits folgendes Skript für den Import meiner csv Dateien. Bei dem Import sollten die Spalten A, ...

Datenbanken
Oracle SQL - Developer - Import von CSV
Frage von 94451Datenbanken

Hallo, mit dem SQL developer ist es ziemlich einfach Daten als CSV 'automatisiert' zu exportieren: H:\auto\export_archive90.sql; Datei: allerdings habe ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 1 TagMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...