【问题标题】:SQL - OPENDATASOURCE - Excel Sheet with hyphen in nameSQL - OPENDATASOURCE - 名称中带有连字符的 Excel 工作表
【发布时间】: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$'].

标签: sql-server oledb


【解决方案1】:

OLEDB 提供程序将 Excel 工作表名称公开为根据工作表命名的表,并附加一个美元符号。某些字符(其中包括空格和连字符)会混淆 OLEDB 驱动程序或 SQL 解析器或两者。要参考您需要的工作表:

OPENDATASOURCE(   )...['Page1-2$']

我怀疑 OLEDB 驱动程序需要单引号,因为连字符,然后 SQL 将需要方括号,因为引号!

【讨论】:

    猜你喜欢
    • 2011-08-31
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多