2013-06-11 24 views
8

Oto moje uproszczone scenariusz:Sqlcmd końcowe spacje w pliku wyjściowym

Mam tabeli w SQL Server 2005 z pojedynczej kolumny typu varchar(500). Dane w kolumnie mają zawsze długość 350 znaków.

Po uruchomieniu zaznaczenia w edytorze zapytań SSMS, skopiuj & wkleić zestaw wyników do pliku tekstowego, długość linii w pliku wynosi 350, co odpowiada faktycznej długości danych.

Ale kiedy używam sqlcmd z parametrem -o, wynikowy plik ma długość linii 500, która odpowiada maksymalnej długości varchar(500).

Pytanie brzmi, czy bez użycia funkcji ciągów w select, czy istnieje sposób, aby pozwolić sqlcmd wiedzieć, aby nie traktować go tak jak char(500)?

Odpowiedz

13

Możesz użyć opcji formatowania , aby usunąć końcowe spacje z pliku wyjściowego.

Przeczytaj więcej na ten temat MSDN article.

+0

Jestem pewien, że było coś dziwnego w tym, czego naprawdę chciałem, ponieważ wtedy próbowałem -W i to nie pomogło. Albo zrobiłem coś źle, albo zapomniałem dokładnie, czego potrzebowałem, ale twoja odpowiedź rozwiązuje to, o co prosiłem w poście. Dzięki. – Brian

+0

Myślałem, że szaleję, aż znalazłem to! – Adam

0

-W działa tylko z domyślnym rozmiarem 256 dla kolumn o zmiennej wielkości. Jeśli chcesz więcej, musisz użyć -y modyfikatora, który powie ci, że wyklucza się wzajemnie z -W. Zasadniczo nie masz szczęścia i jak w moim przypadku plik rośnie z 0,5M do 172M. Musisz użyć innych sposobów, aby usunąć białe generowanie plików postów. Niektóre komendy PowerShell lub coś podobnego.

+0

arrrrgghhhhh ... – Adam