web-dev-qa-db-fra.com

Comment exporter une requête SQL Server 2005 au format CSV

Je souhaite exporter certaines données SQL Server 2005 au format CSV (séparées par des virgules avec des guillemets). Je peux penser à beaucoup de façons compliquées de le faire, mais je veux le faire de la manière droite. J'ai consulté bcp, mais je ne vois pas comment mettre les guillemets autour des champs (sauf en les concaténant avec les valeurs de champ, ce qui est moche). Je suppose que je pourrais le faire avec sqlcmd et -o, mais cela semble moche pour la même raison.

Y at-il un moyen de le faire bcp?

Existe-t-il un moyen raisonnable pour sqlcmd de le faire?

Existe-t-il un utilitaire simple et génial intégré dans Management Studio que je viens de négliger?

63
John M Gant

Dans Management Studio, sélectionnez la base de données, cliquez avec le bouton droit de la souris et sélectionnez Tasks->Export Data. Vous y verrez des options pour exporter vers différents types de formats, y compris CSV, Excel, etc.

Vous pouvez également exécuter votre requête à partir de la fenêtre Requête et enregistrer les résultats au format CSV.

62
Jose Basilio

Dans studio de gestion, définissez les options de requête de manière à ce qu'elles soient générées dans le fichier, et dans options-> résultats de la requête, définissez la sortie dans un fichier à l'aide de virgules comme séparateur.

44
Sijin

Si vous ne pouvez pas utiliser Studio de gestion, j'utilise sqlcmd.

sqlcmd -q "select col1,col2,col3 from table" -oc:\myfile.csv -h-1 -s","

C'est le moyen rapide de le faire en ligne de commande.

31
curtisboy

Je devais faire une chose de plus que ce que Sijin avait dit pour lui permettre d'ajouter des guillemets correctement dans SQL Server Management Studio 2005. Aller à

Tools->Options->Query Results->Sql Server->Results To Grid

Cochez la case à côté de cette option:

Quote strings containing list separators when saving .csv results

Remarque: la méthode ci-dessus ne fonctionnera pas pour SSMS 2005 Express! Autant que je sache, il n’ya aucun moyen de citer les champs lors de l’exportation des résultats au format .csv à l’aide de SSMS 2005 Express.

25
goku_da_master

Oui, il existe un utilitaire très simple dans Management Studio, si vous souhaitez simplement enregistrer les résultats d'une requête sur un fichier CSV.

Faites un clic droit sur le jeu de résultats, sélectionnez "Enregistrer les résultats sous". Le type de fichier par défaut est CSV.

9
Pete H.

Si cela répond à vos besoins, vous pouvez utiliser bcp sur la ligne de commande si vous le faites fréquemment ou souhaitez l'intégrer à un processus de production.

Voici un lien décrivant la configuration.

6
dkretz

Pour les requêtes ad hoc:

Afficher les résultats en mode grille (CTRL + D), lancer la requête, cliquer sur la zone supérieure gauche dans la grille des résultats, coller dans Excel, enregistrer au format CSV. Vous pourrez peut-être coller directement dans un fichier texte (vous ne pouvez pas l'essayer maintenant)

Ou "Résultats dans un fichier" a aussi des options pour CSV

Ou "Résultats en texte" avec des séparateurs de virgule

Tous les paramètres sous Tool..Options and Query .. options (je pense, je ne peux pas vérifier) ​​aussi

5
gbn

En SQL 2005, c'est simple: 1. Ouvrez le studio de gestion SQL Server et copiez l'instruction SQL dont vous avez besoin dans TSQL, telle que exec sp_w Whatever 2. Requête-> Résultats vers la grille 3. Mettez en surbrillance l'instruction SQL et exécutez-la 4. Mettez en surbrillance les résultats des données (clic gauche dans la partie supérieure gauche de la grille des résultats) 5. Maintenant, cliquez avec le bouton droit de la souris et sélectionnez Enregistrer les résultats sous 6. Sélectionnez CSV dans le type d’enregistrement, entrez un nom de fichier, sélectionnez un emplacement et cliquez sur Enregistrer.

Facile! 

2
Scott

mettre nocount sur 

les guillemets sont là, utilisez -w2000 pour conserver chaque ligne sur une ligne.

2
stevej6x7

Je pense que le moyen le plus simple de faire cela est à partir d'Excel. 

  1. Ouvrez un nouveau fichier Excel.
  2. Cliquez sur l'onglet Données
  3. Sélectionner d'autres sources de données
  4. Sélectionnez SQL Server
  5. Entrez votre nom de serveur, base de données, nom de table, etc.

Si vous possédez une version plus récente d'Excel, vous pouvez importer les données de PowerPivot, puis les insérer dans un tableau.

1
salvationishere

Dans SQL Server 2012 - Management Studio:

Solution 1:

Exécuter la requête

Clic droit sur la fenêtre de résultats

Sélectionnez Enregistrer les résultats sous dans le menu.

Sélectionnez CSV

Solution 2:

Clic droit sur la base de données

Sélectionner les tâches, exporter les données

Sélectionner la base de données source

Sélectionner une destination: Destination du fichier plat

Choisissez un nom de fichier

Sélectionnez Format - Délimité

Choisissez une table ou écrivez une requête

Choisissez un délimiteur de colonne 

Remarque: Vous pouvez choisir un qualificateur de texte qui délimitera vos champs de texte, tels que les guillemets.

Si vous avez un champ avec des virgules, n'utilisez pas de virgule comme séparateur, car elle n'échappe pas les virgules. Vous pouvez choisir un délimiteur de colonne tel que Barre verticale: | au lieu d'une virgule ou d'un caractère de tabulation. Sinon, écrivez une requête qui échappe à vos virgules ou délimite votre champ varchar. 

Le caractère d'échappement ou le qualificateur de texte que vous devez utiliser dépend de vos besoins.

1
live-love

Vous pouvez utiliser le module Node.js suivant pour le faire avec un jeu d'enfant:

https://www.npmjs.com/package/mssql-to-csv

0
adnan kamili

SSIS est un très bon moyen de le faire. Cela peut ensuite être planifié à l'aide de travaux SQL Server Agent. 

0
user44565