我正在使用SQL Server管理工作室。

我希望将查询结果保存到excel文件中。

我选择“另存为”,然后保存到CSV文件,我可以在excel中打开。一切都好,除了我缺少列标题,任何想法我如何得到他们导出?


工具>选项>查询结果> SQL Server >文本结果(或网格)>在结果集中包含列标题

更改此选项后,您可能需要关闭并重新打开SSMS。

在SQL编辑器工具栏上,您可以选择保存到文件,而不必重新启动SSMS


尝试导出向导。在这个例子中,我选择了一个完整的表,但是你可以很容易地指定一个查询:

(你也可以在这里指定一个查询)


另一种可能是使用剪贴板将结果直接复制粘贴到Excel中。只是要小心一般类型的Excel列,因为它们有时会产生不可预测的结果,这取决于您的数据。在结果网格的任意位置单击ctrl - a,然后右键单击:

如果您在Excel的通用格式进行不希望的转换时遇到麻烦,请在粘贴之前选择Excel中的空白列,并将格式更改为“文本”。


至少在SQL Server 2012中,可以在查询窗口中单击右键,选择“查询选项”。从那里,你可以选择包括网格和/或文本的标题,并有另存为工作方式你想要的,而不重新启动SSMS。

您仍然需要在菜单栏中的Tools->选项中更改它,以便新的查询窗口默认使用这些设置。


选择你的结果,点击左上角,右键单击,选择“复制与标题”。 粘贴到excel中。 完成了!


同样的问题也存在于Visual Studio中,下面是如何解决它的方法:

至:

Tools > Options > SQL Server Tools > Transact-SQL Editor > Query Results > Results To Grid

现在单击复选框为true:“在复制或保存结果时包含列标题”


在寻找一种方法使SSMS在导出结果时正确地转义CSV分隔符时来到这里。

你猜怎么着?-这实际上是一个选项,默认情况下是未选中的。所以默认情况下,你得到破碎的CSV文件(甚至可能没有意识到这一点,特别是如果你的导出很大,你的数据通常没有逗号)-你必须进入并单击复选框,这样你的CSV导出正确!

对我来说,这似乎是一个非常愚蠢的设计选择,也贴切地比喻了微软对软件的一般做法(“默认情况下被破坏,需要无意义的仪式行为来实现琐碎的功能”)。

但如果有人能给我一个有效的现实生活理由,我很乐意向受访者选择的慈善机构捐赠100美元(即,一个有用的实际场景)。


我也面临着同样的问题。当我使用右键单击查询窗口,并选择查询选项。但标题行不显示在输出CSV文件。

然后注销服务器,再次登录并运行脚本。然后就成功了。


在SQL Server 2014 Management Studio中,设置在:

工具>选项>查询结果> SQL Server >文本结果>在结果集中包含列标题。


The settings which has been advised to change in @Diego's accepted answer might be good if you want to set this option permanently. Permanently means it'll apply to all future query sessions that you open within SQL Server Management Studio(SSMS). This is usually not the case. Also, changing this setting requires restarting SQL Server Management Studio (SSMS). This is again a not-so-nice experience in case there are many unsaved query session windows open and you are in the middle of debugging something.

SQL Server提供了一个非常灵活的选项,可以在每个会话的基础上更改这个设置,非常快速和方便。我详细说明下面的步骤使用查询选项窗口:

在查询编辑器窗口中右击。现在,点击查询选项…在上下文菜单中如下图所示: 在左侧导航窗格的Results节点下选择Grid。现在,在复制或保存结果时勾选“包括列标题”复选框,如下所示:

就是这样。现在,您当前的查询会话将立即开始执行您的设置。您不需要重新启动SSMS。此外,此设置也不会传播到任何未来的会话。实际上,在每个会话的基础上更改这个设置可以减少噪音。