it-swarm.com.de

Speichern Sie die Ergebnisse als CSV * mit * Headern in SSMS

Wenn ich in SQL Server 2008 R2 die Ergebnisse als CSV speichere, gibt es keine Header. Ich kann dies umgehen, indem ich mit "Kopieren mit Überschriften" kopiere und einfüge oder einfach die Überschriften greife und sie in die CSV usw. einfüge. Aber gibt es eine bessere Möglichkeit, dies zu tun?

13
Kyle Brandt

In SSMS müssen Sie einige Optionen ändern:

Extras - Optionen - Ergebnisse abfragen - SQL Server - Ergebnisse in Raster (oder Text) -> Spaltenüberschriften beim Kopieren oder Speichern der Ergebnisse einschließen.

Geänderte Einstellungen werden auf neue, aber nicht vorhandene Abfragefenster angewendet.

22
Marian

Ich sehe, dass Sie klar angegeben haben, dass Sie nach einer Lösung in SSMS suchen Ich dachte jedoch, ich würde eine PowerShell-Lösung bereitstellen, falls dies hilfreich ist (auf SQLPS kann innerhalb von SSMS 2008 & 2008 R2 zugegriffen werden).

Sie können SQLPS (oder reguläre PowerShell mit dem SQL-Cmdlet-Snapin) verwenden, um Folgendes auszuführen:

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

Ich kann mit diesem Beispiel weitermachen, wenn Sie interessiert sind.

Wenn Ihnen der PowerShell-Skriptansatz gefällt, habe ich ein Skript, das Export von CSMS über PowerShell nach CSV . Ich mag es insofern, als Sie ein dynamisches SQL-Skript haben können. Sie können jedoch jeden beliebigen Text auswählen und SSMS übergibt ihn als Argument an das Skript.

Der einzige Nachteil ist, dass ich keinen cleveren Weg gefunden habe, um die Verbindung des aktuellen Fensters weiterzugeben. Meine derzeitige Problemumgehung besteht darin, verschiedene Tools einzurichten, die sich nur in ihren Verbindungszeichenfolgen unterscheiden, d. H. PROD_DW, PROD_DB, TEST_DW ...

3
billinkc

Sie können einen Union All Join ausführen, um Spaltenüberschriften explizit als einzelne Zeilenauswahl hinzuzufügen, die mit den realen Zeilen verbunden ist. Beispiel:

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

Der größte Schmerz bei diesem Ansatz ist die erzwungene Umwandlung in den Zeichendatentyp in der zweiten Auswahl.

1
Phillip Senn