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).
<code>"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\""; </code>
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:
<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>
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