2012-11-28 12 views
5

Używam kod jak to w MSSQL 2008 R2 Management Studio napisać wyniki SELECT do pliku CSV w udziale sieciowym:Puste linie w plikach .csv stworzonych przez SSMS: polecenie OUT

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

Spowoduje to utworzenie pliku mydata.csv we właściwej lokalizacji, ale na końcu pliku csv znajduje się dodatkowy pusty wiersz. Jak zapobiec utworzeniu pustego wiersza w pliku csv?

Czy powyższy opis jest najlepszym sposobem zapisu wyniku zapytania sql w pliku tekstowym? Nie mogę używać BCP.

Dzięki.

+0

Widzę te same wyniki tutaj, gdy uruchomię to. Moją myślą jest, że jest to "tak, jak to działa". Czy można użyć SSIS? – PseudoToad

+0

Wygląda na to, że pusty wiersz jest częścią komunikatu "dotyczy wierszy", który byłby wyświetlany, jeśli NOCOUNT jest wyłączony. – luisdev

+0

możesz użyć sqlcmd? –

Odpowiedz

1

Myślę, że możesz użyć pakietu SSIS, aby uzyskać wynik zapytania w formacie .CSV. czasami możesz uzyskać pustą linię lub spację pomiędzy dwoma lisnymi, w tym przypadku zadanie transformacji "Pochylona kolumna" i usunąć lub przyciąć niechciane spacje i linie.

0

Czy możesz spróbować następujących poleceń z wiersza polecenia?

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 

Rezultat:

enter image description here

Wygenerowany plik ma dodatkową linię na dole (w przeciwieństwie do realizacji SSMS).

+0

Łącze MSDN (http://msdn.microsoft.com/en-us/library/ms162773(v=sql.105).aspx) nie udostępnia przełącznika dla parametru W. Kolejną przyczyną różnic jest klient OLE DB kontra .Net - być może któryś z nich ciągle zwraca dodatkową linię? – milivojeviCH

0

W końcu używanie pakietu SSIS było znacznie lepszym rozwiązaniem.

Powiązane problemy