使用标头保存结果在Sql Server Management Studio中


183

我正在使用SQL Server Management Studio。

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

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

Answers:


273

Tools> Options> Query Results> SQL Server> Results to Text (or Grid if you want)>Include columns headers in the result set

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

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


35
+1,对此进行了测试,它可以正常工作:工具->选项->查询结果-> SQL Server->结果到网格,然后选中“复制或保存结果时包括列标题”。
杰夫·绪方

46
这适用于SSMS 2012-您需要重新启动SSMS才能使设置生效。
SliverNinja-MSFT 2012年

17
要确认,您肯定需要关闭并重新打开SSMS才能应用此选项。
Christopher King

8
就像Christopher所说的那样,您确实需要重新启动SSMS才能使更改生效。
罗布2014年

8
对于SSMS 2016,您仍需要重新启动它才能使这些更改生效。
克里斯·哈斯

36

尝试导出向导。在此示例中,我选择了整个表,但是您可以轻松地指定一个查询:

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

(您也可以在此处指定查询)

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明

在此处输入图片说明


4
感谢那。但这是用于表的。我的问题是要查询。
dublintech

1
您还可以在第四步中指定查询-“指定表副本或查询”。
约翰·杜威

我尝试了所有其他方法,这是唯一适用于我的混合数据类型的方法。
DOK

3
尽管这有效,但非常痛苦且耗时。SQL Server和Excel都是MS产品,令人惊讶的是,在2013年没有一个简单的导出按钮!
Andre

34

另一种可能性是使用剪贴板将结果直接复制并粘贴到Excel中。只需注意“常规”类型的Excel列,因为根据您的数据,有时它们可​​能会产生不可预测的结果。CTL-A在结果网格中的任何位置,然后右键单击:

在此处输入图片说明

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


这很棒,除了Excel格式。带前导零的数字(例如移动电话号码)在Excel中会删除零。等待中还有其他格式化问题,后果自负。谢谢微软!
e_i_pi

12

至少在SQL Server 2012中,您可以右键单击查询窗口,然后选择“查询选项”。在这里,您可以选择“包括网格和/或文本的标题”,并使“另存为”按您希望的方式工作,而无需重新启动SSMS。

您仍然需要在菜单栏中的“工具”->“选项”中进行更改,以使新的查询窗口默认使用这些设置。


7

Visual Studio中存在相同的问题,这是在此处进行修复的方法:

去:

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

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



4

如果您要为在SQL Server Management Studio(SSMS)中打开的所有以后的查询会话永久设置此选项,建议更改@Diego的可接受答案的设置可能会很好。通常情况并非如此。另外,更改此设置需要重新启动SQL Server Management Studio(SSMS)应用程序。如果您有许多未保存的打开查询会话窗口,并且正在进行一些调试,那么这再次是“不太好的”体验。

SQL Server提供了一个非常灵活的选项,可以在每个会话的基础上对其进行更改,这非常快捷,方便且方便。我正在使用“查询选项”窗口详细介绍以下步骤:

  1. 在查询编辑器窗口中右键单击>单击Query Options...上下文菜单底部的,如下所示:

在此处输入图片说明

  1. 在左侧导航窗格中选择Results> Grid。选中Include column headers when copying or saving the results右窗格中的复选框,如下所示:

在此处输入图片说明

而已。您当前的会话将立即生效,而无需重新启动SSMS。另外,此设置不会传播到任何将来的会话。在每个会话的基础上有效地更改此设置的噪音要小得多。


2

寻找导出结果时使SSMS正确转义CSV分隔符的方法时,请转到此处。

你猜怎么了?-这实际上是一个选项,默认情况下未选中。因此,默认情况下,您会损坏CSV文件(尤其是如果导出量很大并且数据通常没有逗号的话,甚至可能没有意识到)-您必须进入并单击一个复选框,以便CSV导出正确!

在我看来,这似乎是一个巨大的愚蠢的设计选择,并且是对Microsoft一般软件方法的恰当比喻(“默认情况下,需要无意义的仪式性操作才能使琐碎的功能起作用”)。

但是,如果有人可以给我一个有效的现实理由,表明该选项存在(例如,一个有用的实际情况),我将很乐意向被调查者选择的慈善机构捐款100美元。


2

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

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


0

我也面临同样的问题。当我使用鼠标右键时,在查询窗口中选择“查询选项”。但是标题行不会显示在输出CSV文件中。

然后注销服务器,再次登录并运行脚本。然后它起作用了。


您是否尝试过更改Include column headers when copying or saving the results选项?在窗口的左侧导航窗格中选择Results> 时,此选项可见。GridQuery Options
RBT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.