Basalt Studio logo
Basalt Studio.Basalt Studio.
Back

Comment importer un CSV dans MySQL : quatre techniques efficaces

Eliott Ardisson

Eliott Ardisson

Founder & CEO - Basalt Studio

Updated
tutorials

Comment importer un fichier CSV dans MySQL : quatre méthodes concrètes, de l'interface graphique à l'automatisation, avec les erreurs à éviter.

ai agents
automation
programmatic

Points clés

  • MySQL Workbench est le point d’entrée idéal pour des imports ponctuels sans connaissances en ligne de commande, jusqu’à quelques dizaines de milliers de lignes.
  • La commande LOAD DATA INFILE reste la méthode la plus performante pour les volumes importants et les scripts automatisés.
  • NocoDB transforme MySQL en interface de type tableur et simplifie l’import CSV pour les équipes non techniques.
  • n8n permet de construire des workflows d’import automatisés déclenchés par un événement (dépôt de fichier, email, planification horaire).
  • La majorité des échecs d’import viennent d’une préparation insuffisante des données : encodage, formats de dates, séparateurs décimaux.

Pourquoi l’import CSV vers MySQL mérite une vraie méthode

Si vous gérez une PME, vous exportez des données en permanence : listes de contacts depuis un CRM, exports comptables, rapports de ventes, données RH. À un moment donné, tout ça doit atterrir quelque part de structuré. MySQL reste l’une des bases de données relationnelles les plus utilisées au monde, et le CSV est le format d’échange universel entre outils. Le problème, c’est que l’interface entre les deux est rarement documentée pour des cas d’usage réels.

Cet article couvre quatre méthodes concrètes : interface graphique, SQL direct, no-code via NocoDB, et automatisation avec n8n. Pour chaque méthode, vous trouverez les étapes, les pièges courants et les situations dans lesquelles elle a du sens.

Méthode 1 : MySQL Workbench (interface graphique)

Installation et connexion

MySQL Workbench est l’outil officiel d’Oracle pour administrer une base MySQL visuellement. La version Community Edition est gratuite et couvre l’essentiel des besoins d’une PME.

Après installation, ouvrez Database → Manage Connections et renseignez les paramètres de connexion :

  • Hostname : l’adresse IP ou le nom DNS du serveur
  • Port : 3306 par défaut
  • Username / Password : vos identifiants MySQL

Un point qui bloque souvent les débutants : dans l’onglet Advanced → Others, ajoutez la ligne OPT_LOCAL_INFILE=1. Sans ça, Workbench refuse de lire des fichiers locaux.

Préparer la table de destination

Avant d’importer quoi que ce soit, la table MySQL doit refléter la structure exacte du CSV. Prenons un exemple concret : un cabinet de recrutement qui exporte ses candidats depuis un ATS.

id,nom,prenom,poste,date_entretien,statut
1,Dupont,Claire,Chargée RH,2024-03-15,En cours
2,Martin,Thomas,Développeur,2024-03-18,Retenu

Dans Workbench, clic droit sur Tables → Create Table :

  • id : INT, Primary Key, Auto Increment
  • nom : VARCHAR(80)
  • prenom : VARCHAR(80)
  • poste : VARCHAR(120)
  • date_entretien : DATE
  • statut : VARCHAR(40)

Ajustez les longueurs de VARCHAR en fonction de vos données réelles. Un VARCHAR(80) qui tronque un nom composite cause des corruptions silencieuses difficiles à détecter après coup.

Lancer l’import

Clic droit sur la table → Table Data Import Wizard. L’assistant en cinq étapes gère :

  1. La sélection du fichier CSV
  2. L’encodage (choisissez UTF-8 par défaut)
  3. Le délimiteur de champs (virgule ou point-virgule selon l’origine du fichier)
  4. Le mapping colonne CSV → champ MySQL
  5. La prévisualisation avant validation

Erreurs fréquentes avec Workbench :

  • Oublier que la première ligne est un en-tête (cocher “First row contains column names”)
  • Laisser MySQL deviner le type de date au lieu de le spécifier explicitement
  • Ignorer les avertissements du wizard, qui signalent souvent des troncatures silencieuses

Workbench est adapté pour des imports ponctuels jusqu’à 50 000 lignes environ. Au-delà, les temps d’attente deviennent dissuasifs et il vaut mieux passer à la méthode suivante.

Méthode 2 : La commande LOAD DATA INFILE

Pourquoi c’est la méthode de référence

LOAD DATA INFILE est la commande SQL native pour importer un CSV dans MySQL. Elle est significativement plus rapide que l’interface graphique parce qu’elle opère directement au niveau du moteur de stockage, sans couche intermédiaire.

Avant d’exécuter la commande, activez l’import local si votre serveur le requiert :

SET GLOBAL local_infile = 1;

La commande de base

LOAD DATA LOCAL INFILE '/chemin/vers/candidats.csv'
INTO TABLE candidats
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(nom, prenom, poste, date_entretien, statut);

IGNORE 1 ROWS saute la ligne d’en-tête. ENCLOSED BY '"' gère les champs entre guillemets qui contiennent des virgules.

Gérer les transformations à la volée

L’un des avantages peu connus de LOAD DATA : vous pouvez transformer les données pendant l’import. Cas typique pour les exports Excel français qui formatent les dates en DD/MM/YYYY :

LOAD DATA LOCAL INFILE '/chemin/vers/candidats.csv'
INTO TABLE candidats
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(nom, prenom, poste, @date_str, statut)
SET date_entretien = STR_TO_DATE(@date_str, '%d/%m/%Y');

La variable @date_str reçoit la valeur brute, et STR_TO_DATE fait la conversion avant l’insertion.

Vérification post-import

Ne considérez jamais un import comme terminé sans vérification :

-- Nombre de lignes importées
SELECT COUNT(*) FROM candidats;

-- Détection de doublons éventuels
SELECT nom, prenom, COUNT(*)
FROM candidats
GROUP BY nom, prenom
HAVING COUNT(*) > 1;

-- Vérification des valeurs nulles non attendues
SELECT * FROM candidats WHERE date_entretien IS NULL;

Cette méthode convient à tous les volumes. Pour des tables de plusieurs centaines de milliers de lignes, elle reste rapide et scriptable, ce qui la rend intégrable dans des cron jobs ou des pipelines automatisés.

Méthode 3 : NocoDB pour les équipes non techniques

Ce que fait NocoDB

NocoDB connecte une base MySQL existante et l’expose sous forme d’interface de type tableur, proche d’Airtable. Pour une équipe dont personne ne maîtrise SQL, c’est un compromis sérieux : les données restent dans MySQL, mais l’interface est accessible à tout le monde.

Installation

Via Docker, en deux commandes :

docker run -d --name nocodb \
  -v nocodb_data:/usr/app/data/ \
  -p 8080:8080 \
  nocodb/nocodb:latest

Accédez ensuite à http://localhost:8080, créez un projet, connectez votre base MySQL, et NocoDB liste automatiquement vos tables.

Import CSV depuis l’interface

  1. Sélectionnez la table cible
  2. Cliquez sur Import Data → CSV Import
  3. Glissez-déposez votre fichier
  4. NocoDB détecte les colonnes et propose un mapping automatique
  5. Prévisualisez, corrigez si nécessaire, validez

NocoDB gère la détection de types de données et affiche les conflits potentiels avant l’import. Pour des équipes marketing qui importent des listes de contacts ou des gestionnaires de biens immobiliers qui chargent des exports de leur logiciel métier, c’est souvent le bon niveau d’outil.

Limites à connaître : NocoDB n’est pas adapté aux imports répétitifs à fort volume. Pour 10 000 lignes par semaine, la solution suivante est plus appropriée.

Méthode 4 : Automatisation avec n8n

Quand l’automatisation devient nécessaire

Un cabinet comptable qui reçoit chaque lundi matin des exports de son logiciel de facturation, un gestionnaire HVAC qui charge des rapports d’intervention toutes les nuits, une agence de recrutement qui synchronise son CRM avec sa base candidats deux fois par jour : dans ces cas, l’import manuel n’est pas une option viable sur la durée.

n8n est un outil d’automatisation open-source qui s’installe en self-hosted ou se consomme en SaaS. Il dispose de connecteurs natifs pour MySQL, Google Drive, email, FTP, et des dizaines d’autres sources.

Architecture d’un workflow d’import

Un workflow d’import CSV typique se compose de quatre nœuds :

  1. Trigger : détection d’un nouveau fichier (Google Drive Watch, dépôt SFTP, email entrant avec pièce jointe)
  2. Transformation : nettoyage des données, conversion de formats, validation
  3. Import MySQL : insertion via le nœud MySQL natif de n8n
  4. Notification : Slack, email ou webhook pour confirmer ou alerter en cas d’erreur

Nœud de transformation

const items = $input.all();

return items.map(item => {
  const d = item.json;
  return {
    json: {
      nom: d.nom?.trim(),
      prenom: d.prenom?.trim(),
      date_entretien: new Date(d.date).toISOString().split('T')[0],
      statut: d.statut || 'En cours'
    }
  };
});

Ce type de transformation intercepte les données brutes avant qu’elles n’atteignent MySQL, ce qui réduit les erreurs d’import à la source.

Ce que l’automatisation change concrètement

Dans notre travail avec des PME fondateur-led sur l’automatisation de flux de données récurrents, le constat revient régulièrement : l’import CSV manuel crée une dette opérationnelle invisible. Chaque semaine, quelqu’un consacre du temps à une tâche répétitive, avec un risque d’erreur humaine et aucune traçabilité. L’automatisation ne supprime pas la complexité, elle la rend gérable et auditable.

Erreurs courantes et comment les éviter

Encodage des caractères

L’encodage est responsable d’une proportion significative des échecs d’import. Les fichiers exportés depuis Excel sous Windows utilisent souvent Windows-1252 ou Latin-1 au lieu d’UTF-8. Le symptôme : les accents apparaissent comme des caractères illisibles (é devient é).

Solution : convertissez systématiquement vos fichiers en UTF-8 avant import. Sur Mac/Linux, iconv -f windows-1252 -t utf-8 fichier.csv > fichier_utf8.csv. Configurez MySQL avec CHARACTER SET utf8mb4 pour couvrir l’ensemble des caractères Unicode.

Formats de dates et décimaux

Excel exporte les dates dans le format régional de l’OS. Un fichier produit sur un poste français donnera 15/03/2024, un poste américain donnera 03/15/2024. MySQL attend 2024-03-15. Sans transformation explicite, les dates s’importent à null ou échouent silencieusement.

Même problème avec les décimaux : les exports français utilisent la virgule comme séparateur (15,99), MySQL attend un point (15.99). Utilisez STR_TO_DATE et REPLACE dans vos commandes SQL, ou normalisez en amont dans le nœud de transformation n8n.

Paramètres MySQL souvent négligés

Pour les fichiers volumineux, augmentez max_allowed_packet :

SET GLOBAL max_allowed_packet = 67108864; -- 64MB

Pour les imports qui impliquent des tables avec des clés étrangères, désactivez temporairement les vérifications pour éviter les blocages en cascade :

SET FOREIGN_KEY_CHECKS = 0;
-- Import ici
SET FOREIGN_KEY_CHECKS = 1;

Rétablissez toujours les vérifications après import et validez l’intégrité référentielle manuellement.

Sauvegarder avant tout import en production

C’est la règle qui sauve des journées de travail :

mysqldump -u utilisateur -p nom_base > sauvegarde_avant_import.sql

En cas d’import raté, vous restaurez en quelques minutes au lieu de passer des heures à reconstruire des données corrompues.

Choisir la bonne méthode selon votre contexte

SituationMéthode recommandée
Import ponctuel, équipe non techniqueMySQL Workbench
Volume > 50 000 lignes, besoin de scriptingLOAD DATA INFILE
Équipe sans accès SQL, besoins collaboratifsNocoDB
Imports récurrents, plusieurs sourcesn8n automatisé
Transformation complexe + audit trailn8n + logs structurés

Le bon choix dépend moins du volume que de la fréquence et du profil de l’équipe. Un import mensuel de 200 000 lignes géré par un développeur ira en SQL direct. Le même volume géré par une assistante administrative chaque semaine justifie une interface ou un workflow automatisé.

Liste de vérification avant chaque import

Préparation :

  • Vérifier l’encodage du fichier (UTF-8)
  • Contrôler les formats de dates et séparateurs décimaux
  • Valider que les colonnes du CSV correspondent à la table cible
  • Sauvegarder la base de données

Pendant l’import :

  • Surveiller les messages d’erreur ou d’avertissement
  • Ne pas interrompre un import en cours sur une table avec transactions actives

Après l’import :

  • Compter les lignes importées et comparer au fichier source
  • Vérifier un échantillon d’enregistrements
  • Tester les requêtes métier sur les nouvelles données
  • Documenter la procédure pour la prochaine fois

Maîtriser l’import CSV, c’est poser les bases de l’automatisation

L’import CSV dans MySQL n’est pas une compétence isolée. C’est souvent la première étape vers quelque chose de plus structuré : des pipelines de données automatisés, des bases de connaissance alimentées en temps réel, des agents IA qui opèrent sur des données à jour. Maîtriser les quatre méthodes décrites ici vous donne la flexibilité d’adapter la solution au contexte, qu’il s’agisse d’un import ponctuel ou d’un flux quotidien critique.

Si votre PME traite des volumes croissants ou commence à envisager l’automatisation de ses flux de données comme levier opérationnel, une conversation de cadrage peut aider à clarifier ce qui vaut la peine d’être automatisé en priorité. Vous pouvez réserver un appel stratégie avec Basalt Studio ici.