2012-11-28 40 views
5

我用這樣的代碼在MSSQL 2008 R2 Management Studio中寫SELECT語句的網絡共享的結果到CSV文件:空白行通過SSMS創建的.csv文件:OUT命令

SET NOCOUNT ON; 
GO  
:OUT \\163.123.45.678\SomeFolder\mydata.csv  
SELECT id, name, surname FROM sometable;  
GO 

這會在正確的位置創建mydata.csv文件,但在csv文件末尾會有一個額外的空行。如何防止在csv文件中創建空白行?

以上是將sql查詢的輸出寫入文本文件的最佳方法嗎?我不能使用BCP。

謝謝。

+0

我在這裏看到相同的結果。我的想法是,這只是「它的工作方式」。可以使用使用SSIS? – PseudoToad

+0

看起來,如果NOCOUNT爲OFF,空白行將成爲「x rows affected」消息的一部分。 – luisdev

+0

你可以使用sqlcmd嗎? –

回答

1

我認爲你可以使用SSIS包來獲取.CSV格式的查詢結果。有時您可能會在兩個lisne之間出現空行或空格,在這種情況下,「派生列」轉換任務將刪除或修剪不需要的空格和行。

0

您可以從命令提示符下嘗試以下操作嗎?

C:\>sqlcmd -S SQLServerHost -W -Q "SET NOCOUNT ON; SELECT TOP 5 date_id, previous_date, next_date FROM dates WHERE month_key = 201212" > testNoLine.txt 

其結果是:

enter image description here

生成的文件在其底部沒有額外的行(不像SSMS執行)。

+0

MSDN鏈接(http://msdn.microsoft.com/zh-cn/library/ms162773(v=sql.105).aspx)未提供W參數的開關。另一個不同的原因是OLE DB和.Net客戶端 - 也許其中一個人總是返回一個額外的線? – milivojeviCH

0

最終使用SSIS包是一個更好的解決方案。

相關問題