Speichern von Ergebnissen mit Headern in SQL Server Management Studio

183

Ich verwende SQL Server Management Studio.

Ich möchte die Ergebnisse einer Abfrage in einer Excel-Datei speichern.

Ich wähle "Speichern unter" und speichere dann in einer CSV-Datei, die ich in Excel öffnen kann. Alles gut, außer dass mir Spaltenüberschriften fehlen. Irgendwelche Ideen, wie ich sie exportieren kann?

dublintech
quelle

Antworten:

273

Tools> Options> Query Results> SQL Server> Results to Text (or Grid if you want)>Include columns headers in the result set

Möglicherweise müssen Sie SSMS schließen und erneut öffnen, nachdem Sie diese Option geändert haben.

In der SQL Editor-Symbolleiste können Sie Speichern in Datei auswählen, ohne SSMS neu starten zu müssen

Diego
quelle
35
+1, Getestet und es funktioniert: Extras -> Optionen -> Abfrageergebnisse -> SQL Server -> Ergebnisse in Raster, dann aktivieren Sie "Spaltenüberschriften beim Kopieren oder Speichern der Ergebnisse einschließen".
Jeff Ogata
46
Dies funktioniert für SSMS 2012 - Sie müssen SSMS neu starten, damit die Einstellungen wirksam werden.
SliverNinja - MSFT
17
Zur Bestätigung müssen Sie SSMS unbedingt schließen und erneut öffnen, damit diese Option angewendet werden kann.
Christopher King
8
Wie Christopher sagte, müssen Sie SSMS neu starten, damit die Änderungen funktionieren.
Rob
8
Für SSMS 2016 müssen Sie es auch noch neu starten, damit diese Änderungen wirksam werden.
Chris Haas
36

Probieren Sie den Export-Assistenten aus. In diesem Beispiel wähle ich eine ganze Tabelle aus, aber Sie können genauso einfach eine Abfrage angeben:

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

(Sie können hier auch eine Abfrage angeben)

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

John Dewey
quelle
4
Dank dafür. Aber das ist für Tabellen. Meine Frage war für eine Anfrage.
Dublintech
1
Sie können auch eine Abfrage im vierten Schritt angeben - "Tabellenkopie oder Abfrage angeben".
John Dewey
Ich habe alle anderen Ansätze ausprobiert, und dies ist der einzige, der für meine gemischten Datentypen funktioniert hat.
DOK
3
Während dies funktioniert, ist es sehr schmerzhaft und zeitaufwändig. SQL Server und Excel sind beide MS-Produkte. Es ist erstaunlich, dass es im Jahr 2013 keine einfache Exportschaltfläche gibt!
Andre
34

Eine andere Möglichkeit besteht darin, die Ergebnisse in der Zwischenablage zu kopieren und direkt in Excel einzufügen. Seien Sie vorsichtig mit Excel-Spalten vom Typ Allgemein, da diese je nach Ihren Daten manchmal unvorhersehbare Ergebnisse haben können. CTL-AKlicken Sie mit der rechten Maustaste auf eine beliebige Stelle im Ergebnisraster:

Geben Sie hier die Bildbeschreibung ein

Wenn Sie Probleme mit dem allgemeinen Excel-Format haben, das unerwünschte Konvertierungen durchführt, wählen Sie die leeren Spalten in Excel aus, bevor Sie sie einfügen, und ändern Sie das Format in "Text".

John Dewey
quelle
Dies ist großartig, außer für die Excel-Formatierung. Zahlen mit führenden Nullen (z. B. Handynummern) lassen die Nullen in Excel fallen. Es gibt auch andere Formatierungsprobleme, die auf Ihre eigene Gefahr warten. Vielen Dank an Microsoft!
e_i_pi
12

Zumindest in SQL Server 2012 können Sie mit der rechten Maustaste in das Abfragefenster klicken und Abfrageoptionen auswählen. Von dort aus können Sie Kopfzeilen für Raster und / oder Text einschließen auswählen und das Speichern unter so ausführen, wie Sie es möchten, ohne SSMS neu zu starten.

Sie müssen es noch unter Extras-> Optionen in der Menüleiste ändern, damit neue Abfragefenster diese Einstellungen standardmäßig verwenden.

Michael McCormick
quelle
7

Das gleiche Problem besteht in Visual Studio. So beheben Sie es dort:

Gehe zu:

Tools > Options > SQL Server Tools > Transact-SQL Editor > Query Results > Results To Grid

Aktivieren Sie nun das Kontrollkästchen auf true: "Spaltenüberschriften beim Kopieren oder Speichern der Ergebnisse einschließen"

Nicholas Petersen
quelle
6

Wählen Sie Ihre Ergebnisse aus, indem Sie in die obere linke Ecke klicken, mit der rechten Maustaste klicken und "Mit Überschriften kopieren" auswählen. In Excel einfügen. Getan!

Chris Dimitriu
quelle
4

Die Einstellungen, deren Änderung in der von @ Diego akzeptierten Antwort empfohlen wurde, sind möglicherweise gut, wenn Sie diese Option für alle zukünftigen Abfragesitzungen, die Sie in SQL Server Management Studio (SSMS) öffnen, dauerhaft festlegen möchten. Dies ist normalerweise nicht der Fall. Zum Ändern dieser Einstellung muss außerdem die SSMS-Anwendung (SQL Server Management Studio) neu gestartet werden. Dies ist wieder eine "nicht so schöne" Erfahrung, wenn Sie viele nicht gespeicherte offene Abfragesitzungsfenster haben und sich mitten im Debuggen befinden.

SQL Server bietet eine sehr raffinierte Option zum Ändern pro Sitzung, die sehr schnell, praktisch und bequem ist . Ich beschreibe die folgenden Schritte mithilfe des Abfrageoptionsfensters:

  1. Klicken Sie Query Options...mit der rechten Maustaste in das Abfrageeditorfenster.> Klicken Sie unten im Kontextmenü wie folgt:

Geben Sie hier die Bildbeschreibung ein

  1. Wählen Sie im linken Navigationsbereich Results> Grid. Aktivieren Sie das Include column headers when copying or saving the resultsKontrollkästchen im rechten Bereich wie folgt:

Geben Sie hier die Bildbeschreibung ein

Das ist es. In Ihrer aktuellen Sitzung werden Ihre Einstellungen mit sofortiger Wirkung berücksichtigt, ohne dass SSMS neu gestartet wird. Diese Einstellung wird auch nicht an zukünftige Sitzungen weitergegeben. Das effektive Ändern dieser Einstellung pro Sitzung ist viel leiser.

RBT
quelle
2

Ich bin hierher gekommen, als ich nach einer Möglichkeit gesucht habe, SSMS beim Exportieren von Ergebnissen CSV-Trennzeichen ordnungsgemäß zu entkommen.

Erraten Sie, was? - Dies ist eigentlich eine Option und standardmäßig deaktiviert . Standardmäßig erhalten Sie fehlerhafte CSV-Dateien (und können diese möglicherweise nicht einmal erkennen, insbesondere wenn Ihr Export groß ist und Ihre Daten normalerweise keine Kommas enthalten) - und Sie müssen ein Kontrollkästchen aktivieren, damit Ihre CSVs exportiert werden korrekt!

Für mich scheint dies eine monumental dumme Designentscheidung und eine passende Metapher für Microsofts Herangehensweise an Software im Allgemeinen zu sein ("standardmäßig gebrochen, erfordert bedeutungslose rituelle Aktionen, damit triviale Funktionen funktionieren").

Aber ich werde gerne 100 US-Dollar an eine Wohltätigkeitsorganisation nach Wahl des Befragten spenden, wenn mir jemand einen gültigen realen Grund für die Existenz dieser Option nennen kann (dh ein tatsächliches Szenario, in dem sie nützlich war).

Daibhi O Domhnaill
quelle
2

In SQL Server 2014 Management Studio lautet die Einstellung wie folgt:

Extras> Optionen> Abfrageergebnisse> SQL Server> Ergebnisse in Text> Spaltenüberschriften in die Ergebnismenge aufnehmen.

Jason Lewis
quelle
0

Ich stehe auch vor dem gleichen Problem. Wenn ich verwendet habe, klicken Sie mit der rechten Maustaste in das Abfragefenster und wählen Sie Abfrageoptionen. Kopfzeilen werden jedoch nicht in der CSV-Ausgabedatei angezeigt.

Dann melde ich mich vom Server ab, melde mich erneut an und führe das Skript aus. Dann hat es funktioniert.

Hardik Rawal
quelle
Haben Sie versucht, die Include column headers when copying or saving the resultsOption zu ändern ? Diese Option ist sichtbar, wenn Sie im linken Navigationsbereich des Fensters Results> auswählen . GridQuery Options
RBT