it-swarm.dev

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

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 jest na to lepszy sposób?

13
Kyle Brandt

W SSMS musisz zmienić niektóre opcje:

Narzędzia - Opcje - Wyniki zapytania - serwer sql - wyniki do siatki (lub tekstu) -> względnij nagłówki kolumn podczas kopiowania lub zapisywania wyników.

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

22
Marian

Widzę, że wyraźnie stwierdził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.

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 ...

3
billinkc

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.

1
Phillip Senn