SQL - OPENDATASOURCE - 名称中带有连字符的 Excel 工作表
Posted
技术标签:
【中文标题】SQL - OPENDATASOURCE - 名称中带有连字符的 Excel 工作表【英文标题】:SQL - OPENDATASOURCE - Excel Sheet with hyphen in name 【发布时间】:2014-06-03 23:03:42 【问题描述】:我在 Excel 工作簿中有定期来自第三方的数据源。这些工作表被命名为 Page1-2 和 Page2-2,由于连字符,我无法使用 SQL2008R2 访问它们。将其中一张表重命名为 Sheet1 的工作方式如下:
SELECT *
FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source="D:\MyFiles\MyFile.xlsx"; Extended properties=Excel 12.0' )...Sheet1$
我已经尝试了与另一张纸的各种组合,但没有运气,例如。 [Page2-2]、'Page2-2'、[Page2-2$] 等。我收到错误消息“链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”不包含表“第 1-2 $”。该表不存在或当前用户对该表没有权限。'
基本上,我希望这个过程尽可能自动化,所以如果我可以不重命名工作表,我想知道如何访问名称中带有连字符的工作表????
谷歌搜索给我的结果是使用 Jet 提供程序,但这对我没有好处。
谢谢!
【问题讨论】:
我认为您需要OPENDATASOURCE( )...[Page1-2$]
(即方括号内的美元符号),但我目前无法对此进行测试。
谢谢,但我试过了,但没有成功。
你得到什么错误?
链接服务器“(null)”的 OLE DB 提供程序“Microsoft.ACE.OLEDB.12.0”不包含表“Page1-2$”。该表不存在或当前用户对该表没有权限。
this 建议在方括号内使用单引号 - 例如['Page1-2$']
.
【参考方案1】:
OLEDB 提供程序将 Excel 工作表名称公开为根据工作表命名的表,并附加一个美元符号。某些字符(其中包括空格和连字符)会混淆 OLEDB 驱动程序或 SQL 解析器或两者。要参考您需要的工作表:
OPENDATASOURCE( )...['Page1-2$']
我怀疑 OLEDB 驱动程序需要单引号,因为连字符,然后 SQL 将需要方括号,因为引号!
【讨论】:
以上是关于SQL - OPENDATASOURCE - 名称中带有连字符的 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章
sql server OpenDataSource查询excel数据
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource&
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource
解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource