小编Gre*_*ley的帖子

将逗号分隔的文本文件读取到C#DataTable,列被截断为255个字符

我们正在从CSV导入到SQL.为此,我们正在读取CSV文件并使用schema.ini写入临时.txt文件.(我不确定为什么要写这个临时文件,但这就是代码当前的工作方式).从那里,我们使用以下连接字符串(对于ASCII文件)通过OleDB加载DataTable.

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties=\"text;HDR=Yes;FMT=Delimited\"";
Run Code Online (Sandbox Code Playgroud)

我们遇到的问题是超过255个字符的字段会被截断.我在网上看过这个问题,看来默认情况下,文本字段会被截断.

我把我的注册表设置 ImportMixedTypes=Majority Type,并TypeGuessRows=0HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel ,希望mycolumns不再被解释为文本.执行此操作后,临时txt文件正在从CSV文件中正确写入,但是当我调用时dataAdapter.Fill,生成的DataTable仍然具有截断值.

这是有问题的列定义.CommaDelimited #txt注释2错误234真130 0 0

任何帮助,将不胜感激.这时,我对使用任何3d派对代码解决这个问题不感兴趣,必须有一种方法可以使用内置工具.

这是表定义:

<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>
Run Code Online (Sandbox Code Playgroud)

谢谢,

格雷格


我尝试编辑schema.ini指定宽度的文本,这没有帮助(之前设置为备忘录)

[CommaDelimited.txt] Format = CSVDelimited DecimalSymbol =.Col1 = Notes文本宽度5000

.net c# csv oledb jet

4
推荐指数
1
解决办法
3万
查看次数

标签 统计

.net ×1

c# ×1

csv ×1

jet ×1

oledb ×1