2017-11-08 3 views
1

Ich muss eine Vielzahl von Dateitypen lesen, wie xlsx, csv, txt und mdb, und ich möchte eine OleDB-Verbindung verwenden, so dass der Prozess des Lesens der Dateien ist das gleiche, nur mit einer anderen Verbindungszeichenfolge. OleDB ignoriert das Trennzeichen jedoch in Verbindungszeichenfolgen wie dem folgenden und liest nur kommagetrennte Zeichen.OleDb Verbindungszeichenfolge für tabulatorgetrennte Dateien

Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;HDR=Yes;Delimited(\t)'; 
Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Text;HDR=Yes;FMT=TabDelimited'; 

Ich hätte lieber, dass die OleDB-Engine die Arbeit erledigt, anstatt die durch Tabulatoren getrennten Dateien selbst zu analysieren.

Es gibt mehrere StackOverflow-Fragen dazu, und die Lösung besteht normalerweise darin, eine INI-Datei im selben Verzeichnis zu erstellen, aber manchmal haben meine Benutzer keinen Schreibzugriff auf den Ordner. Da alle StackOverflow-Fragen, die meinen ähneln, mindestens ein paar Jahre alt sind, hat jemand aktualisierte Informationen zu diesem Thema? Diese

Antwort

0

ist, wie ich | Trennzeichen verwendet haben | separierten CSV- oder TXT-Dateien mit OleDB jedoch zu lesen, ich ACE-Motor wurde mit und Konstruieren Verbindungszeichenfolge von C#:

connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Path.GetDirectoryName(catalogFile) + ";Extended Properties='text;HDR=YES;FMT=Delimited(" + (char)124 + ")'"; 

(char)124 steht für den ASCII-Code |. dass ASCII-Code des TAB zu kennen ist 9 Sie mit diesem in Ihrer Verbindungszeichenfolge kann versuchen:

...;Extended Properties='text;HDR=YES;FMT=Delimited(" + (char)9 + ")'";

den obigen Code-Schnipsel Versuchen und auch Ihren Code mit MS Access-Datenbank-Engine-Treiber versuchen. Da es neuer ist, hat es vielleicht eine bessere Handhabung der Delimiter-Konfiguration.

+0

Leider funktioniert das nicht für mich. Ich probierte auch eine röhrengetrennte Datei mit '" Provider = Microsoft.ACE.OLEDB.12.0; Datenquelle = ...; Erweiterte Eigenschaften = 'Text; HDR = YES; FMT = Getrennt ("+ (char) 124 +") "" und "... FMT = Getrennt (|)" ohne Erfolg. – zambonee

+0

@zambonee, ja, in der Tat zusätzlich zu den oben genannten Conn. Strings Ich erzeuge auch schema.ini mit Textbegrenzer wie: '" ["+ Path.GetFileName (file) +"] \ r \ nFormat = Getrennt (|) \ r \ nTextDelimiter = "+ textDelimiter ...'. Also wahrscheinlich geht es ohne es nicht. – andrews

Verwandte Themen