При чтении текстового файла с разделителями-запятыми в C # DataTable столбцы усекаются до 255 символов

Мы импортируем из CSV в SQL. Для этого мы читаем CSV-файл и записываем во временный .txt-файл, используя schema.ini. (Я пока не уверен, почему именно пишем в этот временный файл, но именно так работает код в настоящее время). Оттуда мы загружаем DataTable через OleDB, используя следующую строку подключения (для файлов ASCII).

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

Проблема в том, что поля, содержащие более 255 символов, усекаются. Я читал в Интернете об этой проблеме, и кажется, что по умолчанию текстовые поля усекаются таким образом.

Я установил настройки своего реестраImportMixedTypes=Majority Type а такжеTypeGuessRows=0 вHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel надеясь чтоmycolumns больше не будет интерпретироваться как текст. После этого временный текстовый файл правильно записывается из CSV-файла, но когда я звонюdataAdapter.Fillрезультирующий DataTable по-прежнему имеет усеченное значение.

Here is the column definition in question. CommaDelimited#txt Notes 2 false 234 true 130 0 0

Любая помощь будет оценена. В настоящее время я не заинтересован в использовании какого-либо стороннего кода для решения этой проблемы, должен быть способ использования встроенных инструментов.

Вот определение таблицы:

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

Спасибо,

Greg

Я попытался отредактировать schema.ini, указав ширину текста, но это не помогло (раньше было установлено значение memo)

[CommaDelimited.txt] Формат = CSVDelimited DecimalSymbol =. Col1 = Ширина текста заметки 5000

Ответы на вопрос(6)

Ваш ответ на вопрос