2011-06-15 111 views

回答

50

在SSMS中, “查询” 菜单项...... “结果” ... “结果到文件”

快捷= Ctrl + Shift + F

您可以设置它在全球范围太

“工具” ... “选项” ... “查询结果” ...... “SQL服务器” .. “默认目标” 下拉

编辑:评论

在SSMS中,“查询后“菜单项...”SQLCMD“模式

这使您可以像操作一样运行“命令行”。

在我SSMS快速测试2008

:OUT c:\foo.txt 
SELECT * FROM sys.objects 

编辑,2012年9月

:OUT c:\foo.txt 
SET NOCOUNT ON;SELECT * FROM sys.objects 
+1

谢谢。我实际上正在通过查询直接执行此操作。因为我有多个查询,所以在执行批量查询时,先前查询的结果会堆叠起来。 – Legend 2011-06-15 07:01:16

+1

+1天才!这就像一个魅力。只是最后一个请求:是否可以指定分隔符为逗号而不是简单的格式化?我的一些值在它们中包含空格,所以默认的格式将使我的解析器非常复杂。 – Legend 2011-06-15 07:17:44

+0

@传奇:“工具”..等等..“结果到文本”..“自定义分隔符”SSMS中的选项。只影响新的查询窗口(尝试后编辑此评论) – gbn 2011-06-15 07:23:18

10

在SQL Management Studio中,您可以:

  1. 右键单击该结果定格,选择'Save Result As ...'并保存。

  2. 在工具栏上切换“结果到文本”按钮。这会在每个查询运行时提示输入文件名。

如果您需要使其自动化,请使用bcp工具。

+1

+1感谢您使用bcp工具。当我尝试它时,它给了我一个错误:复制方向必须是'in','out'或'format'。你介意给我一个关于如何使用它从文件中使用SQL查询的简短例子吗? – Legend 2011-06-15 07:12:08

+0

示例:'bcp“SELECT Name,GroupName FROM HumanResources.Department”queryout c:\ department.txt -c -T' – 2011-06-15 07:19:28

+0

如果任何列的长度超过256个字符,请勿使用SSMS方法。它会静静地截断列,或者至少在旧版SS中。 – 2017-06-16 01:26:52