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

13

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

Kyle Brandt
quelle
Eigentlich könnte ein SP, der dies tut, ideal sein.
Kyle Brandt
Mit Überschriften kopieren und dann in Excel einfügen!

Antworten:

22

In SSMS müssen Sie einige Optionen ändern:

Extras - Optionen - Abfrageergebnisse - SQL Server - Ergebnisse in Raster (oder Text) -> Spaltenüberschriften beim Kopieren oder Speichern der Ergebnisse einbeziehen .

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

Marian
quelle
10

Ich sehe, dass Sie eindeutig angegeben haben, dass Sie nach einer Lösung für SSMS suchen, aber ich dachte, ich würde eine PowerShell-Lösung bereitstellen, falls dies hilfreich sein sollte (SQLPS ist in SSMS 2008 und 2008 R2 verfügbar).

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.

Aaron Nelson - SQL-Variante
quelle
3

Wenn Sie den PowerShell-Skriptansatz mögen, habe ich ein Skript, das über PowerShell aus SSMS in CSV exportiert . Insofern gefällt es mir, dass Sie ein dynamisches SQL-Skript haben können. Sie können jeden beliebigen Text auswählen und SSMS übergibt ihn als Argument an das Skript.

Der einzige Nachteil ist, dass ich keine clevere Möglichkeit gefunden habe, die Verbindung des aktuellen Fensters weiterzugeben. Meine derzeitige Lösung besteht darin, verschiedene Tools einzurichten, die sich nur in ihren Verbindungszeichenfolgen unterscheiden, z. B. PROD_DW, PROD_DB, TEST_DW ...

billinkc
quelle
1

Sie können einen Union-All-Join ausführen, um Spaltenüberschriften explizit als einzelne Zeile hinzuzufügen. Wählen Sie dabei union gegen die tatsächlichen Zeilen aus. Beispiel:

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

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

Phillip Senn
quelle
-1

SSMS ist kein Datenexport-Tool. Verwenden Sie entweder den Import / Export-Assistenten oder BCP, die beide als Datenexport-Tools konzipiert wurden und das tun, was Sie möchten.

mrdenny
quelle
Wenn dies strikt zutrifft, sollte es überhaupt keine Exportoption geben. Wenn Sie einer Software eine Funktion hinzufügen, muss diese ordnungsgemäß funktionieren. Mindestens SSMS 2008R2 besteht diesen Test beim Export nicht. Darüber hinaus kann SSMS die Anforderungen des OP tatsächlich erfüllen.
Eric J.
2
SSMS ist ein Ad-hoc-Datenexporttool. Wenn Sie beispielsweise einen einmaligen Datenextrakt für Excel benötigen, ist SSMS das schnellste und einfachste Tool. In der Zeit, die der Export-Assistent benötigt, um zu starten, können Sie die Abfrage ausführen und die Ergebnisse speichern.
Greenstone Walker