【问题标题】:Suppressing query output information from the export file抑制导出文件中的查询输出信息
【发布时间】:2014-09-05 16:44:16
【问题描述】:

尝试将 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

我宁愿没有输出和虚线行。我愿意接受任何建议/解决方法。

【问题讨论】:

  • 你可以在它之前尝试Set NoCount On,但我相信它可能仍然有虚线。
  • 没错,这正在发生。我还有虚线行。

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


【解决方案1】:

我想你想添加

SET NOCOUNT ON;

作为存储过程的第一行

并在您的 SQLCMD 调用中添加“-h -1”

编辑:@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   

这与您的需求相比如何?如果这不是您想要的,也许您可​​以尝试不同的解释方式?

【讨论】:

  • 首先谢谢! “NONCOUNT”具有预期结果,但添加“-h -1”会删除标题,而且更糟。
  • 当我尝试改编 stackoverflow.com/a/24329991/1154285 解决方案时,结果相同。
  • 好的,我想我没明白,所以你想要列名而不是它们下面的虚线行?您可以让存储过程将列名作为字符串输出然后输出值吗?另外,是否可以使用对输出格式进行非常精细控制的 SSIS?
  • 感谢您的努力。这不是我所期望的,而是它被接受的解决方法。据我所知,您正在使用 xp_cmdshell 参数,但女巫抑制了标题(“-h -1” - 也尝试过这些),这样您就隐藏了标题,然后定义了您自己带有第一个选择的标题。
  • 不客气,我很高兴回馈给我这么多的社区。是的,隐藏标题并重建我的列名正是我正在做的事情。它很笨重,但它在一个存储过程中,所以至少你可以控制它。如果您使用数字类型或者如果您有带空格的 varchar 字符串,如果您确实考虑将输出转换为字符串并在它们之间手动嵌入分隔符(即制表符),则输出可能会变得很难看。同样,笨重但在 SP 内部,因此您可以控制它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 2014-09-17
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多