我的 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”不包含表“Page1-2$”。该表不存在或当前用户没有该表的权限。'
本质上,我希望这个过程尽可能自动化,所以如果我可以不重命名工作表,我想知道如何访问名称中带有连字符的工作表???
谷歌搜索给我提供了使用 Jet 提供商的结果,但这对我来说没有好处。
谢谢!
最佳答案
OLEDB 提供程序将 Excel 工作表名称公开为根据工作表命名的表,并附加美元符号。某些字符(其中包括空格和连字符)会混淆 OLEDB 驱动程序或 SQL 解析器或两者。要引用您的工作表,您需要:
OPENDATASOURCE( )...['Page1-2$']
我怀疑 OLEDB 驱动程序需要单引号,因为连字符,而 SQL 将需要方括号,因为引号!
关于sql-server - SQL - OPENDATASOURCE - 名称中带有连字符的 Excel 工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24026408/