Zapisz wyniki jako CSV * z * nagłówkami w SSMS

13

W SQL Server 2008 R2, kiedy zapisuję wyniki jako CSV, nie ma nagłówków. Mogę obejść ten problem, kopiując i wklejając za pomocą „Kopiuj z nagłówkami”, lub po prostu chwyć nagłówki i wklej je do pliku CSV itp., Ale czy istnieje lepszy sposób na zrobienie tego?

Kyle Brandt
źródło
W rzeczywistości sp, który to robi, może być idealny.
Kyle Brandt
Skopiuj za pomocą Nagłówków, a następnie wklej do Excela!

Odpowiedzi:

22

W SSMS musisz zmienić niektóre opcje:

Narzędzia - Opcje - Wyniki zapytania - serwer SQL - wyniki do siatki (lub tekstu) -> Dołącz nagłówki kolumn podczas kopiowania lub zapisywania wyników .

Zmienione ustawienia są stosowane do nowych, ale nie istniejących okien zapytań.

Marian
źródło
10

Widzę, że wyraźnie powiedziałeś, że szukasz rozwiązania w SSMS, ale pomyślałem, że dostarczę rozwiązanie PowerShell na wypadek, gdyby to pomogło (SQLPS jest dostępny z wnętrza SSMS 2008 i 2008 R2).

Możesz użyć SQLPS (lub zwykłego PowerShell z snapinem polecenia cmdlet SQL), aby uruchomić coś takiego:

Invoke-Sqlcmd -Query "sp_databases" -ServerInstance "LocalHost\R2" |
Export-Csv -Path "C:\temp\MyDatabaseSizes.csv" -NoTypeInformation

Jeśli jesteś zainteresowany, mogę kontynuować ten przykład.

Aaron Nelson - SQLvariant
źródło
3

Jeśli podoba Ci się podejście skryptowe PowerShell, mam skrypt, który eksportuje do CSV z SSMS za pomocą PowerShell . Podoba mi się, do tej pory możesz mieć dynamiczny skrypt SQL, ale możesz wybrać dowolny tekst, a SSMS przekazuje go do skryptu jako argument.

Jedynym minusem jest to, że nie znalazłem sprytnego sposobu na przejście przez połączenie bieżącego okna. Moje obecne obejście polega na skonfigurowaniu różnych narzędzi, które różnią się tylko ciągami połączeń, tj. PROD_DW, PROD_DB, TEST_DW ...

billinkc
źródło
1

Możesz wykonać łączenie wszystkich połączeń, aby jawnie dodać nagłówki kolumn jako pojedynczy wiersz zaznaczony w połączeniu z prawdziwymi wierszami, na przykład:

SELECT 'col1' AS col1... 
UNION ALL 
SELECT T.col1... 
FROM TABLE T

Największym problemem związanym z tym podejściem jest wymuszony typ danych rzutowania na postać w drugim wyborze.

Phillip Senn
źródło
-1

SSMS nie jest narzędziem do eksportowania danych. Użyj kreatora importu / eksportu lub BCP, z których oba zostały zaprojektowane jako narzędzia do eksportowania danych i zrobią to, co chcesz.

mrdenny
źródło
Gdyby było to ściśle prawdą, nie powinien mieć żadnej opcji eksportu. W przypadku dowolnego oprogramowania, jeśli dodasz funkcję, spraw, aby działała poprawnie. Przynajmniej SSMS 2008R2 nie przejdzie tego testu, jeśli chodzi o eksport. Dodatkowo, SSMS faktycznie może zaspokoić potrzeby OP.
Eric J.
2
SSMS to narzędzie do eksportu danych ad hoc. Jeśli potrzebujesz jednorazowego wyciągu danych do, powiedzmy, Excela, SSMS jest najszybszym i najłatwiejszym narzędziem. W czasie uruchamiania Kreatora eksportu możesz wykonać zapytanie i zapisać wyniki.
Greenstone Walker,