通过64位的ADO.NET进行CSV访问?

时间:2009-01-12 09:37:58

标签: ado.net csv odbc oledb

在32位.NET应用程序中,我可以使用此OLEDB连接字符串通过ADO.NET连接到CSV文件:

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

或这个ODBC:

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

然而,显然不存在OLEDB Jet驱动程序或ODBC文本驱动程序的64位版本。

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

有什么想法吗?

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

亚历,

你需要一个司机吗?如果您只需要逐行读取CSV文件,那么有许多免费的解析器。如果您还需要写出CSV,请查看FileHelpers

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

你很幸运 - 2010年12月,微软发布了一个用于CSV和XLSX文件的64位OLEDB驱动程序!

有关下载链接,安装详细信息,连接字符串等信息,请参阅this answer