从导出文件中抑制查询输出信息

时间:2014-07-15 13:06:54

标签: sql sql-server csv export-to-csv

尝试将SQL Server数据库查询结果导出到.csv文件我根据它所呈现的内容here具有类似的输出情况但是我有一个不同的方法我打开一个新线程。

我有一个复杂的查询,通过一些临时表使用一些过滤器连接几个表。我正在执行存储过程:

EXEC xp_cmdshell 'SQLCMD -S . -d myDATABASE -Q "EXECUTE myStoreProcedure;" -s " " -x -o "d:\result.csv"';

我将所有数据都存入result.csv,但文件的开头包含一些

(10 rows affected)
(4 rows affected)
(23 rows affected)
(5 rows affected)
(8 rows affected)
(2 rows affected)
//followed by the header columns - as expected
----------------------------------------------------------------------
//and effective results - as expected

我不希望输出和虚线。我愿意接受任何建议/解决方法。

1 个答案:

答案 0 :(得分:1)

我想你要添加

SET NOCOUNT ON;

作为存储过程的第一行

并添加" -h -1"到你的SQLCMD电话

编辑:@siyual在nocount部分打败了我。我会把它留下来,但他先得到它: - )

编辑2:好的,我编写了一个简短的例子来说明我的意思和它产生的输出

--EXEC xp_cmdshell 'SQLCMD -h -1 -S myserver -d Scratchpad_A -Q "EXECUTE spDummy;" -s " " -x -o "C:\TEMP result.csv"';
CREATE procedure spDummy as 
SET NOCOUNT ON;
DECLARE @T TABLE( Person varchar(7), FavCol varchar(7));
INSERT INTO @T(Person, FavCol) VALUES ('Alice','Red'), ('Bob','Yellow'), ('Cindy','Green'), ('Dan','Blue');
SELECT 'Person' as H1, 'FavCol' as H2;
SELECT * FROM @T

它给了我输出

Person FavCol
Alice   Red    
Bob     Yellow 
Cindy   Green  
Dan     Blue   

这与您的需求相比如何?如果那不是您正在寻找的,也许您可​​以尝试不同的方式来解释它?