Lendo arquivo de texto delimitado por vírgula para C # DataTable, colunas são truncadas para 255 caracteres
Estamos importando de CSV para SQL. Para fazer isso, estamos lendo o arquivo CSV e gravando em um arquivo .txt temporário usando um schema.ini. (Eu não tenho certeza ainda exatamente porque estão escrevendo para este arquivo temporário, mas é assim que o código funciona atualmente). A partir daí, estamos carregando uma DataTable via OleDB usando a seguinte string de conexão (para arquivos ASCII).
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
O problema que estamos tendo é que os campos com mais de 255 caracteres são truncados. Eu li on-line sobre esse problema e parece que, por padrão, os campos de texto são truncados dessa forma.
Eu defino minhas configurações de registroImportMixedTypes=Majority Type
eTypeGuessRows=0
emHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel
, esperando quemycolumns
não será mais interpretado como texto. Depois de fazer isso, o arquivo txt temporário está sendo gravado corretamente a partir do arquivo CSV, mas quando eu ligodataAdapter.Fill
, o DataTable resultante ainda tem um valor truncado.
Aqui está a definição da coluna em questão. CommaDelimited # txt Notas 2 falso 234 verdadeiro 130 0 0
Qualquer ajuda seria apreciada. Neste momento, eu não estou interessado em usar qualquer código de terceiros para resolver este problema, deve haver uma maneira de usar ferramentas embutidas.
Aqui está a definição da tabela:
<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>
Obrigado,
Greg
Eu tentei editar o schema.ini especificando o texto com uma largura, e isso não ajudou (foi definido como memo antes)
[CommaDelimited.txt] Format = CSVDelimited DecimalSymbol =. Col1 = Largura do texto das notas 5000