2009-01-12 29 views
4

在一个32位的.NET应用程序,我可以使用此OLEDB连接字符串经由ADO.NET连接到CSV文件:通过ADO.NET在64位CSV访问?

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\foo;" 

或该ODBC之一:

"Driver={{Microsoft Text Driver (*.txt; *.csv)}};Dbq=c:\foo" 

然而,有显然没有64位版本的OLEDB Jet驱动程序或ODBC文本驱动程序。

我可以逐行解析CSV或以32位模式运行应用程序,但理想情况下我只想找到以64位方式运行的不同驱动程序。

任何想法?

回答

1

这不是一个驱动程序,但我对Sebastien Lorion的CSV阅读器很满意。请注意,我从未在64位环境中使用过它,但我不知道任何兼容性问题。

http://www.codeproject.com/KB/database/CsvReader.aspx

+0

不是一个完美的解决方案,但一个很好的解决方案。谢谢杰里米。 – 2009-01-13 13:53:06

0

我最终不得不将我的应用程序转换为32位,因为我遇到同样的问题,但访问Microsoft Access数据库。我知道这会起作用,但你可能不需要这个解决方案。如果有人知道这个问题的答案,我也很乐意听到这个问题。

1

Alexis,

您是否需要驱动程序?如果您只需要逐行读取CSV文件,那么可以使用一些免费的解析器。如果您还需要写出CSV检查FileHelpers

+0

我不* *需要一个驱动程序,但它将接近于零的努力来安装驱动程序并更改连接字符串,并且略微> 0地努力去做其他事情。 看起来我不得不做其他事情:) – 2009-01-13 13:52:28

0

你在luck-- 2010年12月微软发布了64位OLEDB驱动程序CSV和XLSX文件!

下载链接查看this answer,安装细节,连接字符串等

2

我有这个确切的同样的问题,经过大量试验&错误这是我发现的工作:

1.启用即席程序

sp_configure 'show advanced options', 1; 
RECONFIGURE; 
GO 
sp_configure 'Ad Hoc Distributed Queries', 1; 
RECONFIGURE; 
GO 

2.在服务器上安装此文件:

http://www.microsoft.com/downloads/en/details.aspx?familyid=C06B8369-60DD-4B64-A44B-84B371EDE16D&displaylang=en

3.使用此查询格式:

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=C:\SQL\;HDR=Yes;','SELECT * FROM [test.csv]'); 

4.启用OLE自动化过程:

sp_configure 'show advanced options', 1; 
GO 
RECONFIGURE with override 
GO 
sp_configure 'Ole Automation Procedures', 1; 
GO 
RECONFIGURE with override; 
GO