Beim Lesen der durch Kommas getrennten Textdatei in C # -Datentabelle werden Spalten auf 255 Zeichen gekürzt

Wir importieren von CSV nach SQL. Dazu lesen wir die CSV-Datei und schreiben mithilfe einer schema.ini in eine temporäre TXT-Datei. (Ich bin mir noch nicht sicher, warum genau in diese temporäre Datei geschrieben wird, aber so funktioniert der Code derzeit). Von dort laden wir eine DataTable über OleDB mit der folgenden Verbindungszeichenfolge (für ASCII-Dateien).

<code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
</code>

Das Problem ist, dass Felder mit mehr als 255 Zeichen abgeschnitten werden. Ich habe online über dieses Problem gelesen und es scheint, dass Textfelder standardmäßig so abgeschnitten werden.

Ich habe meine Registrierungseinstellungen festgelegtImportMixedTypes=Majority Type undTypeGuessRows=0 imHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel in der Hoffnung, dassmycolumns wird nicht mehr als Text interpretiert. Danach wird die temporäre txt-Datei korrekt aus der CSV-Datei geschrieben, aber wenn ich anrufedataAdapter.Fillhat die resultierende DataTable noch einen abgeschnittenen Wert.

Hier ist die fragliche Spaltendefinition. CommaDelimited # txt Notes 2 false 234 true 130 0 0

Jede Hilfe wäre dankbar. Gegenwärtig bin ich nicht daran interessiert, 3D-Party-Code zur Lösung dieses Problems zu verwenden. Es muss eine Möglichkeit geben, integrierte Tools zu verwenden.

Hier ist die Tabellendefinition:

<code><Columns> 
    <TABLE_NAME>CommaDelimited#txt</TABLE_NAME> 
    <COLUMN_NAME>Notes</COLUMN_NAME> 
    <ORDINAL_POSITION>2</ORDINAL_POSITION> 
    <COLUMN_HASDEFAULT>false</COLUMN_HASDEFAULT> 
    <COLUMN_FLAGS>234</COLUMN_FLAGS> 
    <IS_NULLABLE>true</IS_NULLABLE> 
    <DATA_TYPE>130</DATA_TYPE> 
    <CHARACTER_MAXIMUM_LENGTH>0</CHARACTER_MAXIMUM_LENGTH> 
    <CHARACTER_OCTET_LENGTH>0</CHARACTER_OCTET_LENGTH> 
</Columns>
</code>

Vielen Dank,

Greg

Ich habe versucht, die Datei schema.ini zu bearbeiten, indem ich einen Text mit einer Breite angegeben habe. Dies hat jedoch nicht geholfen (zuvor war Memo eingestellt).

[CommaDelimited.txt] Format = CSVDelimited DecimalSymbol =. Col1 = Notes Text Width 5000

Antworten auf die Frage(6)

Ihre Antwort auf die Frage