Convertisseur CSV vers SQL (générateur d'instructions INSERT)

Convertit des fichiers CSV en instructions SQL INSERT et CREATE TABLE. Prend en charge les dialectes MySQL, PostgreSQL et SQLite avec détection automatique du type de colonne (entier, décimal, texte). La conversion s'effectue entièrement dans le navigateur ; aucune donnée n'est envoyée à un serveur.

Délimiteur
Utiliser la première ligne comme en-tête
Nom de la table
Dialecte SQL
Générer aussi l'instruction CREATE TABLE
Traiter les valeurs vides comme NULL
Regrouper les lignes en une seule instruction INSERT


            
            Copié !
            
          

Saisissez des données CSV pour voir ici le SQL généré.

Correspondance entre une ligne CSV et une instruction INSERT

Une ligne CSV name,age,city
Instruction INSERT résultante INSERT INTO `my_table` (`name`, `age`, `city`) VALUES ('Alice', 30, 'Tokyo');

Lorsque la première ligne est utilisée comme en-tête, chaque ligne suivante devient une instruction INSERT nommant les colonnes de l'en-tête. Les colonnes détectées comme entier ou décimal sont affichées sous forme de nombres sans guillemets, et les autres colonnes sous forme de chaînes entre guillemets simples.

Qu'est-ce que le convertisseur CSV vers SQL ?

Lorsqu'il faut charger un fichier CSV dans une base de données, écrire une instruction INSERT ligne par ligne à la main devient vite fastidieux, voire impossible dès que le fichier dépasse quelques dizaines de lignes. Cet outil lit votre CSV et transforme chaque ligne de données en instruction INSERT prête à l'emploi. Le type de chaque colonne (entier, décimal ou texte) est déterminé automatiquement en parcourant l'ensemble des lignes, ce qui permet également de générer l'instruction CREATE TABLE correspondante en un seul clic.

Trois dialectes sont pris en charge — MySQL, PostgreSQL et SQLite — et le caractère utilisé pour entourer les identifiants ainsi que les noms de types s'adaptent automatiquement selon celui que vous choisissez. Les guillemets simples présents dans vos valeurs sont échappés selon la convention standard de SQL, de sorte que le script généré s'exécute sans retouche. L'ensemble du traitement se déroule directement dans votre navigateur : le contenu de votre CSV n'est jamais transmis à un serveur, ce qui rend l'outil adapté même à des données sensibles.

Comment générer des instructions INSERT à partir d'un CSV

  1. Collez votre CSV Collez le contenu de votre fichier dans la zone de saisie. Si les valeurs sont séparées par des tabulations, pensez à changer le délimiteur en conséquence.
  2. Indiquez le nom de la table et le dialecte Saisissez le nom de la table de destination et sélectionnez le système de base de données utilisé ; le style de guillemets des identifiants s'ajuste automatiquement.
  3. Choisissez les options de sortie Décidez si l'instruction CREATE TABLE doit être générée, si les cellules vides doivent devenir NULL, et si les lignes doivent être regroupées en une seule instruction INSERT.
  4. Copiez et exécutez le script Copiez le SQL généré et collez-le dans votre client de base de données. Si le volume est important, pensez à fractionner l'exécution en plusieurs lots.

Astuces pour en tirer le meilleur parti

  • Le type de chaque colonne (entier, décimal, texte) est déduit automatiquement en examinant toutes les lignes de données de cette colonne. Si ne serait-ce qu'une seule valeur n'est pas numérique, toute la colonne est traitée comme un type texte.
  • Activer « Regrouper les lignes en une seule instruction INSERT » génère une seule instruction `INSERT INTO ... VALUES (...), (...), (...);`, ce qui réduit le nombre d'exécutions nécessaires pour charger de grands volumes de données.
  • MySQL entoure les identifiants d'accents graves (`), tandis que PostgreSQL et SQLite utilisent des guillemets doubles ("). Le style de guillemets change automatiquement selon le dialecte SQL sélectionné.
  • Désactiver « Traiter les valeurs vides comme NULL » fait que les colonnes de texte affichent des chaînes vides ('') et les colonnes numériques affichent NULL à la place.

Cas d'usage du convertisseur CSV vers SQL

Préparer des données de test (seed data)

Des données créées dans un tableur peuvent être transformées directement en instructions INSERT, sans avoir à écrire un seeder complet dans votre framework pour un jeu de données ponctuel ou de faible volume.

Migrer des données de référence

Un export CSV issu d'un système existant peut être converti en instructions prêtes à être rejouées sur une nouvelle base de données, avec en prime l'instruction CREATE TABLE si la table n'existe pas encore.

Vérifier le type de chaque colonne

Observer les types détectés automatiquement permet de repérer des valeurs inattendues dans une colonne : si une colonne censée être numérique ressort en texte, c'est souvent le signe d'une valeur mal saisie ou d'un caractère parasite.

Comparer la syntaxe entre dialectes

En rechargeant le même fichier CSV et en changeant simplement de dialecte, on obtient un exemple concret des différences de guillemets d'identifiants et de noms de types entre MySQL, PostgreSQL et SQLite.

Vocabulaire autour du chargement SQL

Instruction INSERT
Instruction SQL qui ajoute une ou plusieurs lignes à une table, en associant chaque valeur au nom de colonne correspondant.
Instruction CREATE TABLE
Instruction SQL qui crée une nouvelle table en définissant ses colonnes et leurs types. Elle est nécessaire lorsque la table de destination n'existe pas encore.
Dialecte SQL
Ensemble des variations de syntaxe propres à chaque système de gestion de base de données, comme le symbole utilisé pour entourer les identifiants ou l'orthographe des noms de types.
NULL
Valeur spéciale indiquant l'absence de donnée. Elle se distingue d'une chaîne vide, d'où l'importance de choisir explicitement comment traiter les cellules vides.
Échappement
Traitement qui neutralise la signification syntaxique d'un caractère pour qu'il soit interprété comme un simple caractère littéral ; c'est le cas des guillemets simples présents dans une valeur texte.
Insertion en masse (bulk insert)
Méthode consistant à charger plusieurs lignes en une seule instruction INSERT, ce qui réduit le nombre d'analyses syntaxiques et de validations de transaction, et accélère donc l'exécution.

Questions fréquentes

Chaque valeur de cette colonne sur toutes les lignes de données est examinée : si toutes sont des entiers, la colonne devient INTEGER ; si toutes sont des décimaux, elle devient REAL ; sinon (texte ou valeurs mixtes), elle devient TEXT. Ce type détecté est utilisé directement dans l'instruction CREATE TABLE générée.

Oui. En sélectionnant PostgreSQL ou SQLite dans « Dialecte SQL », les guillemets d'identifiants (guillemets doubles) et les noms de types sont générés conformément à chaque base de données respective.

Selon la convention d'échappement standard de SQL, les guillemets simples sont automatiquement doublés (''), afin que l'instruction résultante puisse être exécutée telle quelle.

Non. Toute la conversion s'effectue en JavaScript dans votre navigateur, et le contenu CSV saisi n'est jamais transmis à un serveur. Il est possible de l'utiliser en toute sécurité même avec des données sensibles.
Tool-kun

Anecdote — pourquoi les instructions INSERT regroupées sont plus rapides

L'option de cet outil permettant de « regrouper les lignes en une seule instruction INSERT » (`INSERT INTO t VALUES (1,'a'), (2,'b'), ...;`) peut s'exécuter nettement plus vite que l'émission d'une instruction INSERT par ligne. Cela s'explique par la réduction du coût d'analyse et de planification de chaque instruction SQL, ainsi que du coût des validations de transaction qui, sinon, se répéteraient à chaque instruction.

Cela dit, MySQL impose une limite `max_allowed_packet`, et PostgreSQL a une limite similaire sur son tampon de communication ; entasser trop de lignes dans une seule instruction INSERT peut donc dépasser ces limites et provoquer une erreur. En pratique, diviser les instructions toutes les quelques centaines à quelques milliers de lignes est l'approche courante.

Charger des données CSV dans une base de données de test est souvent appelé « seeding » dans les flux de développement, et de nombreux frameworks web — dont les seeders et factories de Laravel — proposent des mécanismes dédiés précisément à cette tâche. Un convertisseur rapide comme celui-ci reste pratique pour des vérifications à petite échelle ou des migrations de données qui ne justifient pas la mise en place de toute cette infrastructure.