在 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 中创建列