2012-11-28 12 views
5

私は、ネットワーク共有上のCSVファイルへのSELECT文の結果を書き込むためのMSSQL 2008 R2管理Studioで、このようなコードを使用しています:空白行: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形式で取得できると思います。時には2つのlisneの間に空白の行または空白があります。その場合は 'Derived Column'変換タスクを実行し、不要な空白と行を削除またはトリムします。

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/en-us/library/ms162773(v=sql.105).aspx)がWパラメータのスイッチを提供していません。違いのもう一つの理由は、OLE DBと.Netクライアントです - それらのうちの1つが余分な行を常に返しているのでしょうか? – milivojeviCH

0

最後に、SSISパッケージを使用する方がはるかに優れた解決策でした。