Exporter une table SQL Server vers un fichier CSV en Python

Exemple de code Python pour extraire les données d’une table SQL Server dans un fichier CSV, en utilisant les modules pyodbc et csv.

Dans ce tutoriel, nous allons apprendre comment exporter une table SQL Server vers un fichier CSV en utilisant uniquement des scripts Python. Nous passerons en revue 4 étapes principales. La première consiste à créer une table d’exemple dans SQL Server. La deuxième est de se connecter à l’instance SQL. La troisième consiste à récupérer les données de la table SQL Server à l’aide d’une requête SELECT de base.

Ensuite, nous exporterons le contenu de la table vers un fichier CSV en utilisant la bibliothèque csv en Python. Enfin, nous regrouperons toutes les étapes dans un script unique. À la fin de ce tutoriel, vous saurez comment exporter des données d’une base de données SQL Server vers un fichier CSV en utilisant Python. Mais tout d’abord, vous avez besoin d’une table SQL d’exemple à exporter.

1. Créer une table SQL Server d’exemple à exporter

Ce code crée une table SQL Server d’exemple nommée dbo.employees dans une base de données et insère quatre lignes d’exemple. La table a quatre colonnes : id, nom, département et salaire. La colonne id est définie comme clé primaire de la table.

Les instructions INSERT INTO insèrent quatre lignes de données dans la table dbo.employees. Chaque ligne a des valeurs pour chacune des colonnes dans l’ordre spécifié, c’est-à-dire : id, nom, département et salaire.

CREATE TABLE dbo.employees (
   id INT PRIMARY KEY,
   name VARCHAR(50),
   department VARCHAR(50),
   salary INT
);

INSERT INTO employees VALUES (1, 'John Smith', 'Sales', 50000);
INSERT INTO employees VALUES (2, 'Jane Doe', 'Marketing', 60000);
INSERT INTO employees VALUES (3, 'Bob Johnson', 'IT', 70000);
INSERT INTO employees VALUES (4, 'Alice Wong', 'HR', 55000);

Une fois terminé, il suffit de techniquement effectuer 3 étapes suivantes, simples, en utilisant les scripts fournis ci-dessous.

2. Se connecter à la base de données SQL Server avec pyodbc

En effet, techniquement les étapes sont très similaires à l’exportation Excel en utilisant Python, mais bien sûr le module d’exportation utilisé dans l’étape suivante est différent dans ce cas. La première étape consiste à se connecter à la base de données SQL Server en utilisant le module pyodbc.

Dans mon cas, j’utilise SQL Server 2019 installé sur une machine Windows 10. Et j’utilise Visual Studio 2019 pour développer mes scripts Python. Voici un exemple de code qui établit une connexion à une base de données SQL Server. J’utilise une authentification Windows donc je n’entre pas de nom d’utilisateur et de mot de passe.

# importer le module pyodbc pour gérer la connexion ODBC
import pyodbc

# déclarer des variables pour stocker les détails de connexion
driver = 'SQL Server'
server = 'localhost'
database = 'Expert-Only'

# se connecter à la base de données SQL Server
connection = pyodbc.connect(f'DRIVER={driver};'
                            f'SERVER={server};'
                            f'DATABASE={database};'
                            f'Trusted_Connection=yes;')

Assurez-vous de remplacer les espaces réservés par les valeurs réelles de votre chaîne de connexion SQL Server : driver, server, database, et si nécessaire, nom d’utilisateur et mot de passe. Dans ce cas, le code serait plutôt comme ceci :

import pyodbc

# se connecter à la base de données SQL Server
server = 'localhost'
database = 'database_name'
username = 'username'
password = 'password'
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                      f'SERVER={server};'
                      f'DATABASE={database};'
                      f'UID={username};'
                      f'PWD={password}')

3. Récupérer les données de la table SQL Server

Une fois que la connexion à la base de données SQL Server est établie, nous pouvons récupérer les données de la table en utilisant une requête T-SQL. Voici un exemple de code qui récupère toutes les lignes de la table dbo.employees que nous avons créée à l’étape 1. Assurez-vous de remplacer « employees » par le nom réel de votre table SQL Server.

# retrieve the data from the employees table
cursor = connection.cursor()
cursor.execute('SELECT * FROM dbo.employees')
data = cursor.fetchall()

Cet autre tutoriel permet de manipuler des objets SQL Server et des données au sens large depuis des scrips écrits en Python.

4. Créer le fichier et exporter les données avec le module csv

Enfin, nous pouvons créer un fichier CSV en utilisant le module csv et écrire les données dans ce fichier. Voici un exemple de code qui crée un nouveau fichier CSV nommé employees.csv et écrit les données récupérées dedans. Encore une fois, assurez-vous de remplacer le chemin et le nom de fichier par le nom réel que vous voulez donner à votre fichier CSV.

# importer le module Python csv
import csv

# créer un nouveau fichier CSV et écrire les données dans celui-ci
with open("C:\data\employees.csv", mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerows(data)

5. Code complet pour exporter une table SQL Server en CSV

L’exemple de code Python complet ci-dessous fusionne toutes les étapes en un seul script. C’est-à-dire comment exporter les données SQL Server vers un fichier CSV en utilisant Python. Le script importe les bibliothèques nécessaires, pyodbc et csv, et établit une connexion à la base de données. Ensuite, il exécute une requête SQL pour sélectionner les données. Enfin, il écrit les données dans un nouveau fichier CSV en utilisant la bibliothèque csv.

Les en-têtes sont extraits de la description du curseur et écrits dans le fichier en premier, suivis des données elles-mêmes. Une fois l’exportation terminée, le curseur et la connexion à la base de données sont fermés. Ce code peut être facilement modifié pour répondre à votre cas d’utilisation spécifique en ajustant la chaîne de connexion, le nom de la table et le nom du fichier.

import pyodbc
import csv

# Étape 1 : Se connecter à l'instance SQL Server

# déclarer des variables pour stocker les détails de connexion
driver = 'SQL Server'
server = 'localhost'
database = 'Expert-Only'

# se connecter à la base de données SQL Server
connection = pyodbc.connect(f'DRIVER={driver};'
                            f'SERVER={server};'
                            f'DATABASE={database};'
                            f'Trusted_Connection=yes;')

# Étape 2 : Récupérer les données de la table SQL Server

cursor = connection.cursor()
cursor.execute('SELECT * FROM dbo.employees')
data = cursor.fetchall()

# Étape 3 : Écrire les données dans le fichier CSV
with open("C:\data\employees.csv", mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow([x[0] for x in cursor.description])  # write header
    for row in data:
        writer.writerow(row)

# Étape 4 : Fermer la connexion à la base de données
cursor.close()
connection.close()

Le résultat est un fichier CSV exporté directement dans le dossier C:\data, avec le même contenu que la table MS SQL d’origine.

Comment exporter une table SQL Server dans un fichier CSV en Python ? Fichier exporté sous Windows.
Comment exporter une table SQL Server dans un fichier CSV en Python ? Fichier exporté sous Windows.

Bien sûr, vous devez également remplacer et définir ces 3 variables avec vos propres valeurs :

  • driver
  • server
  • database

Et si vous n’utilisez pas un compte Windows pour exécuter le script Python :

  • nom d’utilisateur
  • mot de passe

6. Conclusion sur l’export de données SQL Server en CSV avec Python

En conclusion, après avoir suivi toutes les étapes décrites dans ce tutoriel Python, vous devriez maintenant être en mesure d’exporter une table SQL Server vers un fichier CSV. N’oubliez pas de vous connecter d’abord à votre base de données SQL Server en utilisant pyodbc, puis de récupérer les données de la table et enfin d’écrire les données dans un fichier CSV en utilisant le module csv.

L’exportation de données vers des fichiers plats est fréquente et peut donc être une compétence utile pour de nombreuses tâches d’analyse et de reporting de données. En automatisant ce processus avec Python, vous pouvez gagner beaucoup de temps et d’efforts par rapport à un export manuel depuis SSMS vers Excel ou d’autres formats de fichiers plats.

En effet, Python fournit un ensemble puissant d’outils pour travailler avec des bases de données et des fichiers de données. Avec ces outils, vous pouvez grandement améliorer votre productivité en tant qu’analyste, data scientists ou expert de la données. Il est important de se familiariser avec les syntaxes basiques de Python et d’apprendre à manipuler les variables et les chaines de caractères par exemple.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*