如果我执行以下命令:
select
*
from
OpenRowset (
'MSDASQL',
'Driver={Microsoft Text Driver (*.txt;*.csv)};DefaultDir=C:\;',
'select top 10 * from C:\x.csv'
)
...然后Microsoft SQL Server Management Studio响应:
[Microsoft] [ODBC驱动程序管理器]未找到数据源名称且未指定默认驱动程序。
我在Win 7 x64上运行Microsoft SQL Server 2008 R2。我也在Windows Vista x32上试过它,同样的错误。
问题:
更新1:
如果您收到提及“即席查询”的错误,请运行以下命令以消除它:
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
更新2:
它适用于开箱即用的Win7 x64机器,但我仍然无法在我的机器上修复此错误。我会选择“批量插入”(请参阅下面的评论)。
我刚刚在x64 Win7上试过它并使它工作。我认为有几个问题。
*.txt;
和*.csv
之间添加一个空格这有效:
select * from OpenRowset('MSDASQL',
'Driver={Microsoft Text Driver (*.txt; *.csv)};DefaultDir=c:\;',
'select top 10 * from x.csv')
解决方案:我刚刚在Win7 x64机器上花了几个小时来解决这个问题,而且很难在网上找到一个好的答案,我以为我会在这个问题上为这个问题做出贡献。
在我的计算机(Win7,x64,SQL Server 2008 R2)上,管理工具>数据源(ODBC)>驱动程序,不显示名为“Microsoft Text Driver”的驱动程序。但是有一个标有“Microsoft Access Text Driver(* .txt,* .csv)”的驱动程序
我能够在代码中更改驱动程序名称,类似于原始提问者包含括号(* .txt,* .csv)的逗号和空格,而不是分号。它奏效了。
select
*
from
OpenRowset (
'MSDASQL',
'Driver={Microsoft Access Text Driver (*.txt, *.csv)};DefaultDir=C:\;',
'select top 10 * from C:\x.csv'
)
请注意,指定驱动器的语法必须完全相同。我可以担保,因为我经历了几次错误的迭代。