Laden...

Einlesen von CSV über OleDb mit Anführungszeichen

Erstellt von Steven85 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.812 Views
Steven85 Themenstarter:in
99 Beiträge seit 2011
vor 8 Jahren
Einlesen von CSV über OleDb mit Anführungszeichen

Hallo zusammen,

ich habe ein Problem beim einlesen von CSV Dateien über OleDb.
Folgende Konfiguration verwende ich:


StringBuilder sbConnectionString = new StringBuilder(512);
sbConnectionString.Append("Provider= Microsoft.Jet.OLEDB.4.0;");
sbConnectionString.Append("Data Source=").Append(Path.GetDirectoryName(sFilename)).Append(";");
sbConnectionString.Append("Extended Properties=\"Text;");
sbConnectionString.Append("HDR=Yes;");
sbConnectionString.Append("FMT=Delimited\";");

// Sql-Statement erstellen...
string SqlStatement = "Select * from " + Path.GetFileName(sFilename);

// Datenzugriffsobjekte erzeugen...
OleDbDataAdapter adptSelect = new OleDbDataAdapter(SqlStatement, sbConnectionString.ToString());

// Daten auslesen und zurückliefern...
adptSelect.Fill(dataset);

Kommen jedoch Anführunfszeichen in der Datei vor sieht das ungefähr so aus:

field 1;field 2;field 3;field 4;field 5
field 1;field "2";field 3;field 4;field 5
field 1;field 2;field 3;field 4;field 5

+-------+-------+-------+-------+-------+
| field 1| field 2| field 3| field 4| field 5|
+-------+-------+-------+-------+-------+
| field 1| field
+-------+-------+-------+-------+-------+
| field 1| field2 | field 3| field 4| field 5|
+-------+-------+-------+-------+-------+

Ab der Zelle wo er dieses findet, beendet er diese einfach.
Gibt es eine Möglichkeit Anführungszeichen ganz normal mit einzulesen?

F
174 Beiträge seit 2007
vor 8 Jahren

Hallo,

ich weiß jetzt auf Anhieb keine Lösung, aber vielleicht interessiert dich das hier:
A-Fast-CSV-Reader

Benchmarking it against both OLEDB and regex methods, it performs about 15 times faster, and yet its memory usage is very low.

EDIT:
Das ganze gibt's übrigens auch als NuGet Package: LumenWorksCsvReader

S
145 Beiträge seit 2013
vor 8 Jahren

Ich verwende für CSV eigentlich immer aus dem .Net Framework den TextFieldParser.

Assembly: Microsoft.VisualBasic
Namespace: Microsoft.VisualBasic.FileIO

Vielleicht klappts mit dem.