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 enregistrez au format CSV que je peux ouvrir dans Excel. Tout va bien sauf qu'il me manque des en-têtes de colonnes, des idées pour les exporter?
outils -> options -> résultats de la recherche -> serveur SQL -> résultats en texte (ou grille si vous le souhaitez) -> inclure les en-têtes de colonnes dans le jeu de résultats
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.
Une autre possibilité consiste à utiliser le Presse-papiers pour copier et coller les résultats directement dans Excel. Soyez prudent 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-A
n'importe où dans la grille de résultats, puis cliquez avec le bouton droit de la souris:
Essayez l'assistant d'exportation. Dans cet exemple, je sélectionne une table entière, mais vous pouvez également spécifier une requête:
(vous pouvez également spécifier une requête ici)
Au moins dans SQL Server 2012, vous pouvez cliquer avec le bouton droit de la souris 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 en sorte que Enregistrer sous fonctionne comme vous le souhaitez sans redémarrer SSMS.
Vous devrez toujours le modifier dans Outils-> Options de la barre de menus pour que les nouvelles fenêtres de requête utilisent ces paramètres par défaut.
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 . Fait!
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
Maintenant, cliquez sur la case à cocher pour true: "Inclure les en-têtes de colonne lors de la copie ou de l'enregistrement des résultats"
Vous y êtes parvenu lorsque vous cherchez un moyen de permettre à SSMS d'échapper correctement aux séparateurs CSV lors de l'exportation des résultats.
Devine quoi? - c’est en fait une option, et il est décoché par défaut . Donc, par défaut, vous obtenez des fichiers CSV cassés (et vous ne pouvez même pas vous en rendre compte, en particulier si votre exportation est volumineuse et que vos données ne comportent pas de virgules normalement). correctement!
Pour moi, cela semble être un choix de conception monumentalement stupide et une métaphore appropriée pour l'approche de Microsoft en matière de 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 me ferai un plaisir de faire un don de 100 $ à un organisme de bienfaisance choisi par le répondant si quelqu'un peut me donner une raison valable de la vie réelle de son existence (c’est-à-dire un scénario réel dans lequel elle était utile).
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). C'est généralement le cas {pas}. En outre, la modification de ce paramètre nécessite le redémarrage de l'application SQL Server Management Studio (SSMS), ce qui n'est pas très agréable si vous avez plusieurs fenêtres de session de requête ouverte non enregistrées et que vous êtes en train de déboguer.
SQL Server offre une option très astucieuse pour le changer session par session, ce qui est très rapide, pratique et pratique . Je détaille les étapes ci-dessous à l'aide de la fenêtre d'options de requête:
Query Options...
en bas du menu contextuel, comme indiqué ci-dessous:Results
> Grid
dans le volet de navigation de gauche. Cochez la case Include column headers when copying or saving the results
dans le volet de droite, comme indiqué ci-dessous:C'est tout. Votre session en cours respectera vos paramètres avec effet immédiat sans redémarrer SSMS. En outre, ce paramètre ne sera pas propagé à une session ultérieure. La modification efficace de ce paramètre session par session est beaucoup moins bruyante.
Dans SQL Server 2014 Management Studio, le paramètre est le suivant:
Outils, Options, Résultats de la requête, SQL Server, Résultats en texte: incluez des en-têtes de colonne dans le jeu de résultats.
Je suis également confronté au même problème, lorsque j'ai été utilisé avec le bouton droit de la souris dans la fenêtre de requête et sélectionnez Options de requête. Je me déconnecte du serveur, puis je me connecte à nouveau et exécute le script. Cela fonctionne.