Enregistrement des résultats avec des en-têtes dans Sql Server Management Studio

183

J'utilise SQL Server Management Studio.

Je souhaite enregistrer les résultats d'une requête dans un fichier Excel.

Je choisis «enregistrer sous», puis enregistrer dans un fichier CSV que je peux ouvrir dans Excel. Tout va bien sauf qu'il me manque des en-têtes de colonne, des idées sur la façon de les exporter?

dublintech
la source

Réponses:

274

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

Vous devrez peut-être fermer et rouvrir SSMS après avoir modifié cette option.

Dans la barre d'outils de l'éditeur SQL, vous pouvez sélectionner Enregistrer dans un fichier sans avoir à redémarrer SSMS

Diego
la source
35
+1, Testé cela et cela fonctionne: Outils -> Options -> Résultats de la requête -> SQL Server -> Résultats dans la grille, puis cochez «Inclure les en-têtes de colonne lors de la copie ou de l'enregistrement des résultats».
Jeff Ogata
46
Cela fonctionne pour SSMS 2012 - vous devez redémarrer SSMS pour que les paramètres prennent effet.
SliverNinja - MSFT
17
Pour confirmer, vous devez absolument fermer et rouvrir SSMS pour que cette option soit appliquée.
Christopher King
8
Comme Christopher l'a dit, vous devez redémarrer SSMS pour que les modifications fonctionnent.
Rob
8
Pour SSMS 2016, vous devez également le redémarrer pour que ces modifications prennent effet.
Chris Haas
37

Essayez l'assistant d'exportation. Dans cet exemple, je sélectionne une table entière, mais vous pouvez tout aussi facilement spécifier une requête:

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

(vous pouvez également spécifier une requête ici)

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

entrez la description de l'image ici

John Dewey
la source
4
Merci pour ça. Mais c'est pour les tables. Ma question était pour une requête.
dublintech
1
Vous pouvez également spécifier une requête à la quatrième étape - "Spécifier une copie ou une requête de table".
John Dewey
J'ai essayé toutes les autres approches, et c'est la seule qui a fonctionné pour mes types de données mixtes.
DOK
3
Bien que cela fonctionne, c'est très douloureux et prend du temps. SQL Server et Excel sont tous deux des produits MS, il est étonnant qu'il n'y ait pas un simple bouton d'exportation en 2013!
Andre
34

Une autre possibilité consiste à utiliser le presse-papiers pour copier et coller les résultats directement dans Excel. Faites juste attention avec les colonnes Excel de type général, car elles peuvent parfois avoir des résultats imprévisibles, en fonction de vos données. CTL-An'importe où dans la grille de résultats, puis cliquez avec le bouton droit de la souris:

entrez la description de l'image ici

Si vous rencontrez des problèmes avec le format général d'Excel effectuant des conversions non souhaitées, sélectionnez les colonnes vides dans Excel avant de coller et changez le format en «texte».

John Dewey
la source
C'est génial, sauf pour le formatage Excel. Les nombres avec des zéros non significatifs (par exemple, les numéros de mobile) suppriment les zéros dans Excel. Il existe également d'autres problèmes de formatage, à utiliser à vos risques et périls. Merci Microsoft!
e_i_pi
12

Au moins dans SQL Server 2012, vous pouvez cliquer avec le bouton droit dans la fenêtre de requête et sélectionner Options de requête. À partir de là, vous pouvez sélectionner Inclure les en-têtes pour la grille et / ou le texte et faire fonctionner Enregistrer sous comme vous le souhaitez sans redémarrer SSMS.

Vous devrez toujours le modifier dans Outils-> Options dans la barre de menus pour que les nouvelles fenêtres de requête utilisent ces paramètres par défaut.

Michael McCormick
la source
7

Le même problème existe dans Visual Studio, voici comment y remédier:

Aller à:

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

Cliquez maintenant sur la case à cocher true: "Inclure les en-têtes de colonne lors de la copie ou de l'enregistrement des résultats"

Nicholas Petersen
la source
6

Sélectionnez vos résultats en cliquant dans le coin supérieur gauche, faites un clic droit et sélectionnez "Copier avec en-têtes". Coller dans Excel. Terminé!

Chris Dimitriu
la source
4

Les paramètres qu'il a été conseillé de modifier dans la réponse acceptée de @ Diego peuvent être utiles si vous souhaitez définir cette option de manière permanente pour toutes les sessions de requête futures que vous ouvrez dans SQL Server Management Studio (SSMS). Ce n'est généralement pas le cas. En outre, la modification de ce paramètre nécessite le redémarrage de l'application SQL Server Management Studio (SSMS). C'est à nouveau une expérience «pas très agréable» si vous avez de nombreuses fenêtres de session de requête ouvertes non enregistrées et que vous êtes au milieu d'un débogage.

SQL Server offre une option très astucieuse pour le changer par session, ce qui est très rapide, pratique et pratique . Je détaille les étapes ci-dessous en utilisant la fenêtre des options de requête:

  1. Faites un clic droit dans la fenêtre de l'éditeur de requête> Cliquez Query Options...en bas du menu contextuel comme indiqué ci-dessous:

entrez la description de l'image ici

  1. Sélectionnez Results> Griddans le volet de navigation de gauche. Cochez la Include column headers when copying or saving the resultscase dans le volet droit comme indiqué ci-dessous:

entrez la description de l'image ici

C'est tout. Votre session actuelle honorera vos paramètres avec effet immédiat sans redémarrer SSMS. De plus, ce paramètre ne sera propagé à aucune session future. Modifier efficacement ce paramètre sur une base par session est beaucoup moins bruyant.

RBT
la source
2

Arrivé ici lorsque vous cherchez un moyen de faire en sorte que SSMS échappe correctement aux séparateurs CSV lors de l'exportation des résultats.

Devine quoi? - c'est en fait une option, et elle n'est pas cochée par défaut . Donc, par défaut, vous obtenez des fichiers CSV cassés (et vous ne le réalisez peut-être même pas, surtout si votre exportation est volumineuse et que vos données n'ont pas de virgules normalement) - et vous devez entrer et cliquer sur une case à cocher pour que vos CSV exportent correctement!

Pour moi, cela semble être un choix de conception monumentalement stupide et une métaphore appropriée pour l'approche de Microsoft du logiciel en général ("cassé par défaut, nécessite des actions rituelles sans signification pour faire fonctionner des fonctionnalités triviales").

Mais je ferai un don de 100 $ à un organisme de bienfaisance choisi par le répondant si quelqu'un peut me donner une raison valable dans la vie réelle pour que cette option existe (c.-à-d. Un scénario réel où elle a été utile).

Daibhi O Domhnaill
la source
2

Dans SQL Server 2014 Management Studio, le paramètre est à:

Outils> Options> Résultats de la requête> SQL Server> Résultats au texte> Inclure les en-têtes de colonne dans le jeu de résultats.

Jason Lewis
la source
0

Je suis également confronté au même problème. Lorsque j'ai utilisé un clic droit dans la fenêtre de requête et sélectionnez Options de requête. Mais les lignes d'en-tête n'apparaissent pas dans le fichier CSV de sortie.

Ensuite, je déconnecte le serveur, je me reconnecte et j'exécute le script. Ensuite, cela a fonctionné.

hardik rawal
la source
Avez-vous essayé de changer l' Include column headers when copying or saving the resultsoption? Cette option est visible lorsque vous sélectionnez Results> Griddans le volet de navigation gauche de la Query Optionsfenêtre.
RBT