Laden...

[gelöst] Problem beim Einlesen von CSV-File

Erstellt von memphis0815 vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.554 Views
M
memphis0815 Themenstarter:in
31 Beiträge seit 2006
vor 16 Jahren
[gelöst] Problem beim Einlesen von CSV-File

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

F
722 Beiträge seit 2005
vor 16 Jahren

kann es sein, dass das nur so im debugger angezeigt wird?
ansonsten poste doch mal den code-teil in dem du die daten einliest.

M
memphis0815 Themenstarter:in
31 Beiträge seit 2006
vor 16 Jahren

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!

X
40 Beiträge seit 2005
vor 16 Jahren

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.

M
memphis0815 Themenstarter:in
31 Beiträge seit 2006
vor 16 Jahren

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.

3.971 Beiträge seit 2006
vor 16 Jahren

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

M
memphis0815 Themenstarter:in
31 Beiträge seit 2006
vor 16 Jahren

Super, vielen Dank für den Tipp mit den Regex. Hat super funktioniert!

Gruß
-f