2012-11-28 8 views
5

sto usando il codice come questo in MSSQL 2008 R2 Management Studio per scrivere i risultati di un'istruzione SELECT in un file CSV su una condivisione di rete:righe vuote in un file .csv creati tramite SQL Server Management Studio: comando OUT

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

Questo crea il file mydata.csv nella posizione corretta, ma alla fine del file csv è presente una riga vuota aggiuntiva. Come impedire che venga creata una riga vuota nel file csv?

È il modo migliore per scrivere l'output di una query sql in un file di testo? Non posso usare BCP.

Grazie.

+0

Vedo gli stessi risultati qui ogni volta che eseguo questo. Il mio pensiero è che questo è "proprio come funziona". Posso usare usare SSIS? – PseudoToad

+0

Sembra che la riga vuota faccia parte del messaggio "x righe interessate" che verrebbe visualizzato se NOCOUNT è OFF. – luisdev

+0

puoi usare sqlcmd? –

risposta

1

Penso che sia possibile utilizzare il pacchetto SSIS per ottenere il risultato della query nel formato .CSV. a volte è possibile ottenere una linea o uno spazio vuoto tra due lisne, in tal caso l'operazione di trasformazione "Colonna derivata" e rimuovere o ritagliare gli spazi e le linee indesiderate.

0

Puoi provare quanto segue dal prompt dei comandi?

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 

Il risultato:

enter image description here

Il file generato non ha alcuna riga in più sul fondo (a differenza l'esecuzione SSMS).

+0

Il collegamento MSDN (http://msdn.microsoft.com/en-us/library/ms162773(v=sql.105).aspx) non fornisce un parametro per il parametro W. Un altro motivo di differenza è OLE DB vs .Net client - forse uno di questi sta restituendo una riga aggiuntiva tutto il tempo? – milivojeviCH

0

Alla fine l'utilizzo di un pacchetto SSIS era una soluzione decisamente migliore.

Problemi correlati