在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位运行的不同驱动程序。
有什么想法吗?
答案 0 :(得分:2)
我有这个完全相同的问题,并经过多次试验和错误这是我发现的有效:
<强> 1。启用临时程序
sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO
<强> 2。在服务器上安装此文件:
第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位环境中使用它,但我不知道任何兼容性问题。
答案 3 :(得分:0)
我最终不得不将我的应用程序转换为32位,因为我遇到了同样的问题,尽管访问了Microsoft Access数据库。我知道这会奏效,但你可能不想要这个解决方案。如果有人知道这个问题的答案,我也很乐意听到它。
答案 4 :(得分:0)
你很幸运 - 2010年12月,微软发布了一个用于CSV和XLSX文件的64位OLEDB驱动程序!
有关下载链接,安装详细信息,连接字符串等信息,请参阅this answer。