Hallo zusammen,
ich arbeite an einem Tool, dass Daten aus einem CSV-File, dass von einer lokalen App erstellt wird, in eine adäquate MySQL-DB schaufeln soll.
Beim Einlesen der Datei mittels StreamReader setzt er mir vor jedes " einen . Gibt es eine Möglichkeit den Stream so reinzubekommen wie er tatsächlich in der Datei steht? Was mache ich falsch?
Danke und viele Grüße
-f
edit: Titel geändert
kann es sein, dass das nur so im debugger angezeigt wird?
ansonsten poste doch mal den code-teil in dem du die daten einliest.
Ich habe mir mal Teile des Strings per MessageBox ausgeben lassen und da sah's auch so aus...
try
{
StreamReader sr = new StreamReader(mSettings.ServicePath);
sr.Read();
while (!sr.EndOfStream)
{
// create a string array with all data for each row
string[] lineElements = new string[mServiceLineElements];
string line = sr.ReadLine();
char[] c = new char[1];
c[0] = ',';
lineElements = line.Split(c, 23);
SetServiceData(lineElements);
}
sr.Close();
}
catch (IOException e)
{
System.Windows.Forms.MessageBox.Show("Fehler beim Verarbeiten der Datei: " + e.Message);
}
Danke!
Original von memphis0815
ich arbeite an einem Tool, dass Daten aus einem CSV-File, dass von einer lokalen App erstellt wird, in eine adäquate MySQL-DB schaufeln soll.
Warum machst du das selbst? Dafür gibt es z.B. mysqlimport und wenns programmatisch erfolgen soll, z.B. Filehelpers.
Ehrlich gesagt kannte ich die Libraries nicht. Allerdings helfen die mir wahrscheinlich auch nicht, das meine CSV-Files noch bearbeitet werden sollen und zusätzliche Felder vor dem Schreiben hinzugefügt werden sollen. Außerdem ist das File nicht einfach per string.Split() aufzuteilen, weil in einigen Feldern weitere Kommata zu finden sind, bei denen aber eben nicht gesplittet werden darf.
Mit dem Regexausdruck
Regex rgx = new Regex(",(?=(:question:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
kannst du "richtig" die CSV-Dateien auslesen. Komma ist das Trennzeichen. Wenn ein Komma zwischen zwei Anführungszeichen steht, wird dort jedoch nicht getrennt.
Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...
Super, vielen Dank für den Tipp mit den Regex. Hat super funktioniert!
Gruß
-f