在 Sql Server Management Studio 中保存带有标题的结果

Posted

技术标签:

【中文标题】在 Sql Server Management Studio 中保存带有标题的结果【英文标题】:Saving results with headers in Sql Server Management Studio 【发布时间】:2012-05-27 11:23:06 【问题描述】:

我正在使用 SQL Server Management Studio。

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

+1,对此进行了测试,它可以工作:工具 -> 选项 -> 查询结果 -> SQL Server -> 结果到网格,然后选中“复制或保存结果时包含列标题”。 这适用于 SSMS 2012 - 您确实需要重新启动 SSMS 才能使设置生效。 要确认,您肯定需要关闭并重新打开 SSMS 才能应用此选项。 就像 Christopher 所说的,您确实需要重新启动 SSMS 才能使更改生效。 对于 SSMS 2016,您还需要重新启动它才能使这些更改生效。【参考方案2】:

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

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

【讨论】:

谢谢。但这是针对桌子的。我的问题是查询。 也可以在第四步-“指定表复制或查询”中指定查询。 我尝试了所有其他方法,这是唯一适用于我的混合数据类型的方法。 虽然这很有效,但非常痛苦且耗时。 SQL Server和Excel都是MS产品,2013年居然没有简单的导出按钮! 这种方法就是过河取水的定义。【参考方案3】:

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

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

【讨论】:

这很好,除了 Excel 格式。带前导零的数字(例如手机号码)在 Excel 中删除零。还有其他格式问题在等待中,使用后果自负。感谢微软!【参考方案4】:

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

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

【讨论】:

【参考方案5】:

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

转到:

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

现在点击复选框为真:“复制或保存结果时包括列标题”

【讨论】:

【参考方案6】:

通过单击左上角选择您的结果,然后右键单击并选择“使用标题复制”。 粘贴到excel中。 完成!

【讨论】:

当您需要复制大量数据时,这不是很好。【参考方案7】:

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

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

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

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

就是这样。您当前的会话将立即生效您的设置,而无需重新启动 SSMS。此外,此设置不会传播到任何未来的会话。 根据每个会话有效地更改此设置的噪音要小得多。

【讨论】:

【参考方案8】:

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

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

对我来说,这似乎是一个极其愚蠢的设计选择,也是对微软软件方法的恰当比喻(“默认情况下被破坏,需要毫无意义的仪式化操作才能使微不足道的功能发挥作用”)。

但是,如果有人可以给我一个有效的现实生活理由来证明这个选项存在(即它有用的实际场景),我很乐意向受访者选择的慈善机构捐赠 100 美元。

【讨论】:

【参考方案9】:

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

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

【讨论】:

【参考方案10】:

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

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

【讨论】:

您是否尝试更改Include column headers when copying or saving the results 选项?当您在 Query Options 窗口的左侧导航窗格中选择 Results > Grid 时,此选项可见。

以上是关于在 Sql Server Management Studio 中保存带有标题的结果的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL Server Management Studio 中注册 SQL Server 服务器?

SQL Server Management Studio (SSMS,SQL Server管理工具) 一直在加载程序包解决方案

如何使用 Windows 和 SQL 身份验证使用 SQL Server Management Studio 连接到 SQL Server

使用 SQL Server Management Studio 连接到 SQL Server

如何使用 SQL Server Management Studio (2008) 在 SQL Server Compact Edition 中创建列

在 SQL Server Management Studio 中更改 SQL Server 数据库中的列属性