4

在 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 位运行的不同驱动程序。

有任何想法吗?

4

5 回答 5

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
于 2011-06-08T19:21:50.377 回答
1

亚历克西斯,

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

于 2009-01-12T18:05:58.850 回答
1

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

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

于 2009-01-12T19:13:19.260 回答
0

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

于 2009-01-12T16:02:01.017 回答
0

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

请参阅此答案以获取下载链接、安装详细信息、连接字符串等。

于 2011-02-08T18:01:35.803 回答