Accueil · Outils gratuits · CSV en SQL

Convertir CSV en SQL

Déposez un .csv, nommez la table, choisissez la base. Vous obtenez un CREATE TABLE dont les types viennent des données — entiers, décimaux, dates ISO, booléens, texte dimensionné sur la plus longue valeur — puis des INSERT groupés à coller dans une console ou à enregistrer. Le point-virgule et la virgule décimale des CSV français sont reconnus ; les dates 15/03/2026 et les valeurs VRAI/FAUX, elles, restent du texte. Rien n’est téléversé.

Votre CSV

Déposez un .csv, .tsv ou .xlsx ici, ou cliquez pour le choisir

Vous faites ça tous les mois ? Faites-le une fois dans TableDI 2, enregistrez-le comme tâche et relancez-le le mois suivant. Télécharger TableDI 2 gratuitement

Rien n’est téléversé. Le fichier est lu par le JavaScript de cet onglet et ne quitte pas votre ordinateur — aucun serveur ne le voit, et fermer l’onglet le jette.

Convertir un CSV en requêtes SQL

  1. Déposer le CSV. Le séparateur et l’encodage sont détectés. Le fichier reste dans l’onglet.
  2. Nommer la table et choisir la base. MySQL/MariaDB, PostgreSQL, SQLite ou SQL Server : les guillemets, les booléens et les types changent selon le dialecte.
  3. Relire les types. Le tableau Colonne / Type montre ce que chaque colonne est devenue avant que vous n’exécutiez quoi que ce soit.
  4. Copier ou télécharger. Copiez le SQL ou téléchargez le fichier .sql.

Pourquoi l’import intégré ne suffit pas toujours

LOAD DATA INFILE, COPY et les assistants d’import exigent une table qui existe déjà, avec les bons types. Déduire ces types à l’œil sur un export de quarante colonnes est la partie longue, et une erreur fait échouer le chargement à mi-chemin — ou le fait réussir avec tout en VARCHAR(255). Cette page écrit le CREATE TABLE et affiche le type de chaque colonne avant que vous n’exécutiez quoi que ce soit.

Le CSV à la française : point-virgule et virgule décimale

Un CSV exporté par l’Excel français sépare les champs par des points-virgules et écrit les décimales avec une virgule. Les deux sont gérés : le séparateur est détecté sur les premières lignes, et une colonne de valeurs comme 12,50 devient une colonne DECIMAL dont les valeurs sont écrites 12.5, comme SQL l’exige. L’encodage est détecté aussi (UTF-8, Windows-1252…), donc les accents arrivent intacts.

Trois cas à connaître, parce que la page ne les devine pas :

  • Une virgule suivie de exactement trois chiffres est lue comme un séparateur de milliers : 1,250 devient 1250, pas 1,25. Si une colonne contient des valeurs à trois décimales, vérifiez-la dans le tableau des types.
  • Les milliers séparés par une espace (1 234,56) ne sont pas reconnus comme nombres : la colonne entière devient du texte. Exportez sans séparateur de milliers.
  • Si toutes les colonnes sont des décimaux (1,5;2,5), le séparateur reste le point-virgule : la détection retient le caractère qui revient le même nombre de fois sur chaque ligne, pas celui qui est le plus fréquent. Sur un fichier d’une seule ligne, vérifiez le tableau des types : une seule colonne, ou des colonnes coupées au milieu des nombres, signalent une erreur.

Ce qui reste en texte : dates françaises et VRAI/FAUX

Seules les dates au format ISO (2026-03-15, avec ou sans heure) deviennent TIMESTAMP ou DATETIME2. Une date 15/03/2026 reste du texte : rien dans une colonne ne garantit que 03/04/2026 soit le 3 avril, et la page ne réordonne pas les dates à votre place. De même, seuls true/false et yes/no sont reconnus comme booléens : une colonne VRAI/FAUX exportée par l’Excel français arrive en texte. Convertissez ces deux colonnes en SQL après l’import, ou dans le fichier avant.

Codes postaux, noms de colonnes accentués

Une colonne dont une valeur commence par un zéro — code postal 01000, numéro de client 00042 — est un identifiant : elle est typée en texte pour que le zéro survive. Les noms de colonnes sont nettoyés en identifiants valides, accents compris : Code postal devient code_postal, Prénom devient prénom, et l’identifiant est toujours entre guillemets selon le dialecte (accents graves pour MySQL, guillemets doubles pour PostgreSQL et SQLite, crochets pour SQL Server). Deux colonnes homonymes deviennent montant et montant_2. Les apostrophes droites dans les valeurs (l'Isle-d'Abeau) sont doublées, et SQL Server reçoit le préfixe N pour le texte non ASCII.

Des INSERT groupés

Un INSERT par ligne est lent ; un seul INSERT géant dépasse la taille de paquet ou de paramètres du serveur. Les lignes sont regroupées par 500 par défaut, sans dépasser ce que le dialecte accepte (1 000 lignes par INSERT pour SQL Server).

Ce que l’outil ne fait pas

  • Exécuter le SQL : il l’écrit, c’est vous qui le lancez.
  • Déclarer une clé primaire, des index ou des contraintes.
  • Générer des UPDATE ou des upserts : seulement CREATE TABLE et INSERT.
  • Convertir les dates JJ/MM/AAAA ou les VRAI/FAUX, comme dit plus haut.

Si le même export doit être rechargé à chaque période, avec un contrôle avant que rien ne change, c’est un autre outil. TableDI 2 est une application de bureau pour le travail sur fichiers à refaire à chaque période : vos sources, vos règles et votre livraison sont enregistrées dans une tâche, et le mois suivant vous déposez les nouveaux fichiers et vous la relancez. Tout tourne sur votre propre machine.

Questions fréquentes

Mon CSV utilise des points-virgules. Faut-il le convertir d’abord ?

Non. Virgule, point-virgule, tabulation et barre verticale sont détectés sur les premières lignes, et l’encodage aussi (UTF-8, Windows-1252…). Un export de l’Excel français se charge tel quel.

Les nombres à virgule décimale sont-ils reconnus ?

Oui : 12,50 devient 12.5 dans une colonne DECIMAL. Deux exceptions : une virgule suivie de trois chiffres est lue comme séparateur de milliers (1,250 → 1250), et un nombre avec des espaces comme séparateur de milliers fait passer la colonne en texte.

Pourquoi ma colonne de dates est-elle en VARCHAR ?

Parce que seules les dates ISO (AAAA-MM-JJ) sont typées en date. Les dates JJ/MM/AAAA restent du texte : convertissez-les après l’import, par exemple avec STR_TO_DATE en MySQL ou TO_DATE en PostgreSQL.

Peut-on obtenir seulement les INSERT, sans CREATE TABLE ?

Oui, décochez « Inclure le CREATE TABLE ». Utile quand la table existe déjà.

Quelles bases de données sont prises en charge ?

MySQL et MariaDB, PostgreSQL, SQLite et SQL Server. Le dialecte change les guillemets des identifiants, les booléens, les types texte et date, et le nombre maximal de lignes par INSERT.

Mon fichier est-il envoyé quelque part ?

Non. Il est lu et converti par le JavaScript de cet onglet ; aucune requête ne transporte vos données.

Vous faites ça tous les mois ?

Dans TableDI 2, vous le faites une fois, puis vous l’enregistrez comme une tâche. Le mois suivant, vous déposez les nouveaux fichiers et vous la relancez.

macOS, Apple Silicon et Intel ; la version Windows est en préparation (que faire en attendant). La version gratuite n’est pas un essai — ni compte, ni carte.

Dernière relecture le 2026-09-11 par l’équipe TableDI. Une erreur sur cette page ? Écrivez-nous — une seule boîte de réception, lue par ceux qui construisent TableDI.