在SSMS中将结果另存为CSV * with *标头


13

使用SQL Server 2008 R2,当我将结果另存为CSV时,没有标题。我可以通过使用“使用标题复制”进行复制和粘贴来解决此问题,或者仅抓取标题并将其粘贴到CSV等中,但是还有更好的方法吗?


实际上,执行此操作的sp可能是理想的。
凯尔·布​​兰特

复制标题,然后粘贴到Excel中!

Answers:


22

在SSMS中,您需要更改一些选项:

工具-选项-查询结果-SQL Server- 将结果复制到网格(或文本)-> 复制或保存结果时包括列标题

更改的设置将应用于新的查询窗口,而不是现有的查询窗口。


10

我看到您清楚地表明您正在寻找SSMS中的解决方案,但我想我会提供PowerShell解决方案,以防它有所帮助(可从SSMS 2008和2008 R2内部访问SQLPS)。

您可以使用SQLPS(或带有SQL cmdlet管理单元的常规PowerShell)运行以下内容:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

如果您有兴趣,我可以继续看这个例子。


3

如果您喜欢PowerShell脚本方法,那么我有一个脚本,可以通过PowerShell从SSMS导出到CSV。到目前为止,我都喜欢它,您可以有一个动态SQL脚本,您可以选择任何文本,然后SSMS将其作为参数传递给脚本。

唯一的缺点是我没有找到一种巧妙的方法来传递当前窗口的连接。我当前的解决方法是设置不同的工具,这些工具仅在其连接字符串中有所不同,即PROD_DW,PROD_DB,TEST_DW ...


1

您可以进行并集所有联接以显式地添加列标题,就像在单行中选择对实际行进行联合一样,例如:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

这种方法最大的麻烦是在第二选择中强制转换为字符数据类型。


-1

SSMS不是数据导出工具。使用“导入/导出”向导或BCP都是设计为数据导出工具,它们将完成您想要做的事情。


如果严格如此,它根本不应该有任何导出选项。对于任何软件,如果添加功能,请使其正常运行。至少在导出时,SSMS 2008R2无法通过该测试。此外,SSMS实际上可以满足OP的需求。
Eric J.

2
SSMS 一个临时数据导出工具。如果您需要一次性提取数据到Excel中,那么SSMS是最快,最简单的工具。在导出向导启动之前,您可以执行查询并保存结果。
Greenstone Walker
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.