Convertisseur CSV-SQL
Convertissez CSV en SQL INSERT, CREATE TABLE ou inversement dans le navigateur. Détection auto des types, délimiteurs, compatible MySQL Postgres SQLite.
À propos du convertisseur CSV-SQL
CSV-SQL Converter est un outil gratuit qui transforme vos fichiers CSV en instructions SQL et inversement. Générez des scripts INSERT et CREATE TABLE depuis un CSV ou exportez vos résultats SQL vers un CSV, sans quitter votre navigateur pour préserver vos données.
Pourquoi convertir un CSV en SQL ?
C'est indispensable pour importer des données dans une base :
- Alimenter rapidement une table depuis un tableur
- Migrer des données entre applications
- Créer des jeux d'essai pour le développement
- Importer en masse sans saisie manuelle
- Versionner des scripts SQL
L'outil produit des INSERT prêts à l'emploi avec détection automatique des types, ce qui rend l'import fiable.
Quels formats SQL sont proposés ?
Trois options :
1. INSERT uniquement pour des tables déjà existantes
2. CREATE TABLE uniquement pour générer le schéma
3. CREATE + INSERT pour un script complet
Vous pouvez en plus insérer un DROP TABLE afin de remplacer une table existante en toute sécurité.
Comment les types de données sont-ils détectés ?
Le convertisseur analyse chaque colonne :
- Valeurs numériques -> INTEGER ou REAL
- Textes courts (<255 caractères) -> VARCHAR(255)
- Textes longs -> TEXT
- Types mixtes -> TEXT par défaut
Le SQL généré est compatible MySQL, PostgreSQL, SQLite, etc. Vous pouvez ajuster les types après génération si besoin.
Puis-je convertir du SQL vers CSV ?
Oui ! Le mode SQL vers CSV permet d'exécuter vos CREATE et INSERT, de lancer des SELECT, puis d'exporter le résultat en CSV. Vous choisissez le délimiteur, pouvez inclure les en-têtes et ainsi partager des exports ou convertir des sauvegardes SQL en feuille de calcul.
Mes données quittent-elles mon appareil ?
Non. Le traitement s'effectue localement via SQL.js dans le navigateur. Vos données restent privées, idéal pour des informations sensibles.
Et si mes colonnes ont des caractères spéciaux ?
L'outil assainit les noms automatiquement :
- Remplace les caractères spéciaux par des underscores
- Convertit les espaces en underscores
- Évite les conflits avec les mots réservés
- Garantit des identifiants SQL valides
Ainsi, « Employee Name (2024) » devient « Employee_Name_2024 » et fonctionne partout.

Le SQL généré fonctionne-t-il sur MySQL, Postgres et SQLite sans modifications ?
En majorité oui pour les INSERTs. Les types de schéma diffèrent : MySQL utilise VARCHAR(255), Postgres préfère TEXT, SQLite est type-less (utilise INTEGER, REAL, TEXT, BLOB). Le générateur émet des types ANSI compatibles acceptés par les trois. Les features spécifiques Postgres (SERIAL, JSONB, arrays) nécessitent une édition manuelle post-génération.
Comment la détection de type décide-t-elle INTEGER vs REAL vs TEXT ?
Elle scanne jusqu'à 1000 lignes de chaque colonne. Si chaque valeur numérique est un entier (Number.isInteger, sans point décimal) elle renvoie INTEGER (ou INT pour MySQL). Si une valeur numérique comporte des décimales elle renvoie le type flottant du dialecte : REAL (SQLite), DOUBLE PRECISION (Postgres), DOUBLE (MySQL) ou FLOAT (SQL Server). Les colonnes non numériques deviennent VARCHAR(255) pour les chaînes courtes (<255 caractères) ou TEXT pour les longues. Les cellules vides sont ignorées et les types mixtes retombent sur TEXT par sécurité.
Pourquoi ma colonne « order » ou « select » ne casse-t-elle plus le SQL ?
Chaque nom de table et de colonne est désormais entouré par le style de guillemets du dialecte choisi, donc les mots réservés comme order, select ou group sont toujours sûrs. L'outil utilise des `accents graves` pour MySQL, des [crochets] pour SQL Server et des "guillemets doubles" pour PostgreSQL et SQLite (ANSI). Les caractères de guillemet présents dans un nom sont doublés (échappés) automatiquement. Les espaces et caractères spéciaux n'ont donc plus besoin d'être supprimés pour garder l'identifiant valide.
Comment sont gérés les NULL, cellules vides, guillemets, virgules et sauts de ligne ?
Lors de la conversion CSV vers SQL, une cellule vide devient NULL (pas une chaîne vide), les nombres restent sans guillemets et les textes sont entre guillemets simples avec les apostrophes internes échappées par doublement ('' -> ''). Lors de la conversion des résultats SQL vers CSV, NULL devient un champ vide et toute valeur contenant le délimiteur, un guillemet double ou un saut de ligne est entourée de guillemets doubles avec les guillemets internes doublés - échappement CSV standard RFC 4180 - afin que virgules et sauts de ligne intégrés fassent un aller-retour sans perte.
Quel dialecte cible choisir et que fait l'INSERT multiligne ?
Choisissez la base vers laquelle vous allez importer - MySQL, PostgreSQL, SQLite ou SQL Server. Le dialecte contrôle les guillemets des identifiants (accents graves, crochets ou guillemets doubles) et les types de colonne (INT vs INTEGER, DOUBLE vs DOUBLE PRECISION vs FLOAT vs REAL, VARCHAR vs NVARCHAR), si bien que le script s'exécute tel quel sans édition manuelle. Activez INSERT multiligne pour émettre des instructions par lots - INSERT INTO t (...) VALUES (...),(...),(...); par blocs de 500 lignes - qui se chargent bien plus vite qu'un INSERT par ligne sur de grands volumes. Laissez-le désactivé pour une sortie d'une ligne par instruction, plus facile à comparer.
Puis-je lancer des requêtes SELECT sur les données chargées ?
Oui. Le mode SQL vers CSV embarque SQL.js (build WebAssembly de 1 Mo de SQLite). Vous pouvez coller des scripts CREATE+INSERT+SELECT et les résultats SELECT s'exportent en CSV. Utile pour filtrer, joindre, agréger avant d'exporter des sous-ensembles. Aucune donnée ne quitte le navigateur ; tout le moteur SQLite tourne côté client.
