我有一个 Excel 文件,我想打开它,点击刷新,它会从 SQL 服务器中提取数据,然后我处理数据并创建一些仪表板。我确实有这个,但我提取的数据太多了,需要一个更复杂的查询和一些连接来缩小范围。
我可以从 Excel 中查询 SQL Server。我可以编辑查询(它只是文本),但它很乏味,有点像在黑暗中行走,因为使用 Excel 进行查询时错误消息毫无用处。我曾经使用 Excel 附带的名为 MSQuery 的 .exe 来执行此操作(但它会阻塞很多东西)。
我可以使用 Microsoft SQL Server Management Studio 编写我想要的查询。
您可能认为我可以在 Studio 中编写查询,然后将查询剪切并粘贴到 Excel 中,但语法似乎略有不同。具体来说,在 Studio 中,在编写查询之前,您必须选择数据库,因此 SQL 查询中的 FROM 语句以 dbo.vSomeViewName 开头。而在 Excel/MSQuery 中,您无需指定数据库,因此查询中的 FROM 语句以 TheDataBaseName.dbo.vSomeViewName 开头。除此之外,还有一些我不明白的其他区别。
我感觉我错过了一些书中认为显而易见或不需要的基本知识。
答案1
我经常在 Excel 和 SQL Server Studio 之间复制和粘贴查询,但并没有遇到您描述的问题。只要在 Excel 中的连接字符串中标识了数据库,那么您就不需要将数据库名称放在每个表或列名称前面。
或者,您可以在查询开始时指定数据库名称:
use database
答案2
当我想粘贴 SQL Server 查询时,我执行以下步骤:(假设 Excel 2007)
- 数据 > 来自其他来源 > 来自 SQL Server
- 输入服务器名称
- 选择您想要的数据库,然后从表列表中选择一个小表。
- 点击“确定”
- 选择表格工具>设计选项卡,单击刷新下的箭头,单击连接属性。
- 单击“定义”
- 将命令类型更改为“SQL”
- 将您的查询粘贴到“命令文本”框中。点击确定。
这对我一直很有效。