SQL - OPENDATASOURCE - Excel表格中带有连字符

时间:2014-06-03 23:03:43

标签: sql-server oledb

我的数据源定期来自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 $]等。我收到错误' OLE DB提供程序" Microsoft.ACE.OLEDB.12.0&# 34;对于链接服务器"(null)"不包含表格" Page1-2 $"。该表不存在或当前用户没有该表的权限。'

基本上,我希望这个过程尽可能自动化,所以如果我不能重命名工作表,我想知道如何使用名称中的连字符访问工作表????

谷歌搜索给了我使用Jet提供商的结果,但这对我没有好处。

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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