【问题标题】:SQL - SELECT statement syntaxSQL - SELECT 语句语法
【发布时间】:2016-01-14 15:37:28
【问题描述】:

在我的桌面上打开一个平面文件的选择语句中,我使用了以下代码,但它失败了。

SELECT * FROM C:\Users\MikeAD\Desktop\DistributionFile.txt

有人知道正确的语法吗?

我也试过了

  SELECT * FROM OPENDATASOURCE( 
           'Microsoft.ACE.OLEDB.12.0', 
           'Data Source=C:\Users\MikeAD\Desktop\DistributionFile.txt)

【问题讨论】:

  • 有什么错误吗?尝试使用“Microsoft.Jet.OLEDB.4.0”作为提供者
  • 您是否在服务器上启用了即席查询?发布您收到的错误消息。
  • 失败了怎么办?详细描述出了什么问题。

标签: sql sql-server database select


【解决方案1】:

尝试使用以下查询:

select * 
from OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\Users\MikeAD\Desktop;Extended Properties="Text;HDR=YES;"',
'select * from DistributionFile.txt')

select * from OpenDataSource('Microsoft.ACE.OLEDB.12.0',
'Text;Database=C:\Users\MikeAD\Desktop\;HDR=YES')...[DistributionFile#txt]

另见文章Connect to Text Files with the Microsoft Jet ODBC Text Driver by Steve Kass

【讨论】:

  • 第一个没有运行。它显示不正确的语法错误。第二个给出了这个错误:OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been rejistered
  • 好的,尝试在第二个查询中使用Microsoft.Jet.OLEDB.4.0。我不知道哪些提供商已经安装了
  • 谢谢。我越来越近了。我收到此错误:OLE DB 提供程序“Microsoft.Jet.OLEDB.4.0”不能用于分布式查询,因为提供程序配置为在单线程单元模式下运行。
【解决方案2】:

这样,正常情况下,我可以选择表单文本文件:

select *
from openrowset('MSDASQL'
               ,'Driver={Microsoft Text Driver (*.txt; *.csv)}'
               ,'select * from C:\Temp\test1.CSV')

为了让这个工作,您必须启用即席分布式查询,如下所示: ad hoc distributed queries Server Configuration Option 告诉我

乔瓦

【讨论】:

  • 我收到此错误:消息 15281,级别 16,状态 1,第 1 行 SQL Server 阻止访问组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource',因为此组件已关闭为此服务器的安全配置的一部分。系统管理员可以使用 sp_configure 启用“即席分布式查询”。有关启用“即席分布式查询”的详细信息,请参阅 SQL Server 联机丛书中的“表面区域配置”。
  • @ObserveDBA:我添加了我的回复。问候乔瓦
  • 您的意思是临时分布式查询吗?如果是这样,我不确定在哪里可以访问该选项
  • 我访问了链接,但第二个“sp_configure”仍然出错
  • 也许您使用的是 sql server 2005?
猜你喜欢
  • 1970-01-01
  • 2014-12-05
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-21
  • 2013-11-17
  • 1970-01-01
相关资源
最近更新 更多