我们正在从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=0
在HKEY_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