Retour à la liste des articles Articles
9 minutes de lecture

Comment exporter un fichier CSV à partir d'une requête T-SQL

Connaître les requêtes SQL pour sélectionner des données dans les bases de données vous permet d'obtenir facilement des informations. Cependant, il existe de nombreuses situations dans lesquelles nous devons exporter des données vers une autre plateforme ou application. Le fichier CSV est une solution à ce problème.

Si vous souhaitez maîtriser le SQL complet, essayez notre piste interactive Le SQL de A à Z interactive. Elle contient 7 cours pratiques sur SQL qui vous feront passer du statut de débutant à celui d'utilisateur avancé de SQL. Inscrivez-vous dès maintenant et gratuitement !

Dans cet article, vous découvrirez ce qu'est un fichier CSV et pourquoi vous souhaitez l'utiliser. Vous apprendrez également 5 méthodes pour exporter des données vers un fichier CSV à partir d'une base de données SQL Server. C'est parti !

Qu'est-ce qu'un fichier CSV, et pourquoi est-il utilisé ?

Vous vous demandez probablement pourquoi vous souhaitez exporter des données vers un fichier CSV. Tout d'abord, le fichier CSV (.csv) est un format de données très populaire, accepté par de nombreuses applications comme Excel, Calc, divers IDE et des serveurs de bases de données. De plus, il a une structure très simple, car les éléments caractéristiques sont des valeurs en lignes séparées par des virgules.

La première ligne contient très souvent l'en-tête de ligne. Regardez l'exemple de fichier suivant :

Commande d'exportation SQL vers CSV

Comme vous pouvez le constater, la première ligne contient l'en-tête avec les noms de colonnes : id, first_name, et last_name. Les lignes qui suivent contiennent les valeurs correspondant aux en-têtes de colonne, séparées par des virgules.

La popularité et la large acceptation de ce format permettent l'échange de données entre différentes plateformes et applications. Il est possible d'exporter des données d'une base de données et de les importer dans un autre logiciel comme Excel.

Cette indépendance permet également de déplacer des données entre différents systèmes d'exploitation comme Windows et Linux. C'est pour cette raison que de nombreux programmes ont une option d'exportation et d'importation de/vers des fichiers CSV. Les entreprises qui travaillent avec des données sur différentes plates-formes peuvent opérer sur les mêmes données et déplacer des données en utilisant le format CSV pour importer et exporter.

Le format CSV permet également de comprendre facilement les données car il est lisible par l'homme. Le contenu du fichier CSV peut être vu comme une feuille de calcul dans Excel ou Calc.

Exemple de données à exporter

Disons que nous avons ce produit à une table dans la base de données du serveur SQL :

idnamecategory
1keyboardelectronics
2brickstoys
3lampelectronics
4wood cartoys
5balltoys

Comme vous le savez, nous pouvons obtenir toutes les lignes de cette table en utilisant une simple requête SQL :

SELECT * FROM product;

Lorsque nous l'exécutons, toutes les données s'affichent dans la fenêtre de sortie SQL. Mais que faire si nous voulons voir les mêmes données dans d'autres applications comme Excel ? Lisez la suite pour découvrir plusieurs méthodes d'exportation des données d'une table vers un fichier CSV.

Les méthodes d'exportation des données SQL d'une table vers un fichier CSV

Nous allons maintenant voir comment exporter les données d'une requête contre un serveur SQL vers un fichier CSV. Il existe plusieurs méthodes différentes pour le faire.

Méthode 1 : Utiliser le SQL Server Management Studio

Cette méthode utilise l'outil SSMS-GUI conçu pour gérer les objets et les données dans SQL Server.

Tout d'abord, exécutez SSMS. Dans le système d'exploitation Windows, allez à "Start", développez "Microsoft SQL Server Tools", et sélectionnez "Management Studio".

Commande d'exportation SQL vers CSV

Dans l'étape suivante, développez le nœud Base de données et cliquez avec le bouton droit de la souris sur votre base de données qui contient la table product (notre base de données est store). Dans le menu, choisissez "Tâches" puis "Exporter les données".

Commande d'exportation SQL vers CSV

L'assistant d'importation et d'exportation s'affiche :

Commande d'exportation SQL vers CSV

Cliquez sur le bouton "Suivant". Dans la liste "Data options", choisissez "SQL Server Native Client" :

Commande d'exportation SQL vers CSV

Remplissez d'autres champs comme le nom du serveur, le login et le mot de passe du serveur, et choisissez la base de données stockant la table que vous souhaitez exporter (notre table product se trouve dans la base de données database store) :

Commande d'exportation SQL vers CSV

Passez à l'étape suivante en cliquant sur le bouton "Next".

Maintenant, choisissez le format du fichier de destination. Pour un fichier CSV, choisissez "Flat File". Remplissez les champs avec le nom du fichier, l'emplacement, et la page de code. Cochez les cases "Unicode" et "Column names" :

Commande d'exportation SQL vers CSV

Dans l'étape suivante, sélectionnez l'option de transférer toutes les données de la table ou écrivez une requête SQL pour le faire. Le choix de la première option ressemble à ceci :

Commande d'exportation SQL vers CSV

Sélectionnez la table product dans la liste des tables :

Commande d'exportation SQL vers CSV

Dans l'étape suivante, cliquez sur le bouton "Suivant".

Commande d'exportation SQL vers CSV

Et cliquez sur le bouton "Terminer" à la dernière étape :

Commande d'exportation SQL vers CSV

Vous voyez les informations sur les succès et les erreurs :

Commande d'exportation SQL vers CSV

Fermez la fenêtre de l'assistant et allez dans le fichier contenant les données du produit de la table. Vous pouvez le trouver dans les catalogues du dossier utilisateur de l'OS Windows.

Méthode 2 : Exploitation d'un ensemble de résultats dans SSMS - Données sans noms de colonnes

Une autre méthode utilisant SSMS pour exporter des données vers un fichier CSV est basée sur les lignes d'un ensemble de résultats.

Dans la fenêtre de l'explorateur d'objets, développez le nœud Base de données et sélectionnez la base de données qui contient notre table produit. Ensuite, cliquez sur le bouton "New Query" pour ouvrir l'éditeur permettant d'écrire des requêtes SQL. Sélectionnez toutes les données de la table product:

SELECT * FROM product;
Commande d'exportation SQL vers CSV

Maintenant, cliquez sur le bouton "Execute" pour exécuter la requête. Dans l'ensemble de résultats, vous voyez toutes les données de la table.

Dans l'étape suivante, cliquez avec le bouton droit de la souris sur les lignes de données dans l'ensemble de résultats et choisissez "Enregistrer le résultat sous" dans le menu.

Commande d'exportation SQL vers CSV

Dans la fenêtre Fichier, sélectionnez le dossier de destination de votre fichier CSV, saisissez le nom du fichier dans le champ Nom du fichier - "product-store" par exemple - et cliquez sur OK. Ce fichier contient vos données, mais sans les noms des colonnes.

Méthode 3 : Exploitation d'un ensemble de résultats dans SSMS - Données avec en-tête

Cette méthode est similaire à la méthode précédente. Elle est également basée sur SSMS et le jeu de résultats, mais les différences résident dans les choix que vous faites à partir du menu.

Tout d'abord, cliquez avec le bouton droit de la souris sur l'ensemble de résultats et choisissez "Select All" dans le menu.

Commande d'exportation SQL vers CSV

Cela permet de sélectionner toutes les lignes.

Commande d'exportation SQL vers CSV

Cliquez avec le bouton droit de la souris sur les lignes sélectionnées et choisissez "Copier avec les en-têtes" dans le menu. Allez dans un fichier CSV vide et collez simplement le contenu.

Méthode 4 : Utiliser l'utilitaire SQLCMD

SQLCMD est un outil qui vous permet d'utiliser un terminal dans un système d'exploitation comme Windows pour exécuter des instructions ou des scripts SQL. Nous pouvons l'utiliser pour exporter des données vers un fichier CSV.

Tout d'abord, ouvrez cmd dans votre système d'exploitation et écrivez la commande suivante :

sqlcmd -S DESKTOP-INGEKE8\MSSQLSERVER,1433
-Q "select * from store.dbo.product"
–s "," –o "C:\Users\dora\Documents\products_list.csv" -E

Exécutez-la en appuyant sur "Entrée".

Laissez-moi vous expliquer plus en détail.

Le premier mot est le nom de l'outil, sqlcmd. Viennent ensuite les options (lettres spécifiques, chacune précédée d'un tiret) nécessaires pour exporter les données d'une requête SQL vers un fichier CSV.

La première option est -S, suivie du nom du serveur, d'une barre oblique inversée, du nom de l'instance de SQL Server, d'une virgule et du numéro de port pour la connexion. Dans mon cas, SQL Server est sur une machine appelée DESKTOP-INGEKE8, et l'instance est MSSQLSERVER. Notez que le port par défaut est 1433.

La deuxième option est -Q. Elle est suivie d'une instruction SELECT pour obtenir les données de la table. Mettez l'instruction SELECT entre guillemets. Dans notre exemple, stocker est la base de données, dbo est le schéma par défaut, et product est le nom de la table.

La troisième option est -s suivie d'une virgule entre guillemets. Ceci spécifie la virgule comme séparateur entre les colonnes du fichier CSV.

La quatrième option est -o pour spécifier le chemin et le nom du fichier de sortie. Mettez le chemin et le nom du fichier entre guillemets.

Et la dernière option est -E. Cela indique qu'il s'agit d'une connexion de confiance au serveur de la base de données.

Commande d'exportation SQL vers CSV

Le résultat est un fichier CSV (products_list.csv) contenant les données de la table product de la base de données store au chemin que vous avez spécifié.

bcp store.dbo.product out C:\Users\dora\Desktop\product-data.csv -S DESKTOP-INGEKE8\SQLEXPRESS -c -t"," -T
bcp "SELECT * from product WITH (NOLOCK)" queryout c:\product-store.csv -c -T

Méthode 5 : Utilisation de l'outil BCP

L'utilisation de l'outil BCP est similaire à la méthode précédente. BCP est un programme de ligne de commande qui copie les données depuis/vers une instance SQL et depuis/vers un fichier de données, en utilisant un format de fichier spécifié. Vous pouvez utiliser cet outil dans le terminal de votre système d'exploitation.

Ouvrez cmd dans le système d'exploitation Windows et exécutez ce qui suit :

bcp store.dbo.product out C:\Users\dora\Desktop\product-data.csv
-S DESKTOP-INGEKE8\MSSQLSERVER,1433 -c -t"," -T

Le premier mot est bcp, suivi des noms de la base de données, du schéma et de la table, séparés par un point. Ensuite, la commande out spécifie le chemin du fichier résultat. Dans mon cas, c'est C:\Users\dora\Desktop\product-data.csv.

Ensuite, l'option -S, suivie du nom du serveur, d'une barre oblique inverse, du nom de l'instance de SQL Server, d'une virgule et du numéro de port pour la connexion. Dans mon cas, SQL Server est sur une machine appelée DESKTOP-INGEKE8, et l'instance est MSSQLSERVER. Notez que le port par défaut est 1433.

L'option -t (en minuscules) définit le séparateur entre guillemets. Ici, le séparateur est la virgule.

L'option -T (en majuscules) correspond à l'authentification Trusted Windows.

Lorsque vous exécutez cette opération, vous voyez quelque chose comme l'image ci-dessous pour vous informer de l'état de la copie de vos données :

Commande d'exportation SQL vers CSV

Exportons une table SQL vers un fichier CSV !

Dans cet article, vous avez appris ce qu'est un fichier CSV, comment ce format est construit, et pourquoi il est utilisé dans des applications ou des plateformes. Vous avez également vu plusieurs méthodes pour exporter les données d'une table dans une base de données Microsoft SQL Server vers un fichier CSV.

Vous serez peut-être intéressé par l'article "Comment importer des CSV vers PostgreSQL à l'aide de PgAdmin", qui explique comment exporter vers un fichier CSV à partir d'une base de données PostgreSQL . Ou bien apprenez-en plus sur SQL Server avec les cours sur notre plateforme LearnSQL.fr.