DevToolPal
FR

Convertisseur CSV vers SQL

Transformez un CSV en instructions CREATE TABLE et INSERT pour MySQL, PostgreSQL, SQLite ou SQL Server, avec des types de colonnes déduits.

Traitement local, rien n'est envoyé

Options

Entrée

0 caractères · 0 B

Sortie

0 caractères · 0 B

À quoi ça sert

Charger un tableur dans une base de données oblige souvent à écrire à la main la définition de la table et une longue liste d’instructions INSERT, en échappant chaque apostrophe. Cet outil s’en charge : collez un CSV et obtenez un script SQL prêt à exécuter, avec une instruction CREATE TABLE et des INSERT multi-lignes regroupés par lots.

Il suit la RFC 4180 : champs entre guillemets, virgules et retours à la ligne dans les cellules, guillemets doublés. Les chaînes sont échappées correctement pour la base choisie, y compris les barres obliques inverses dans MySQL et les chaînes Unicode N'…' de SQL Server.

Mode d’emploi

  1. Collez un CSV, importez un fichier .csv ou .tsv, ou cliquez sur Exemple.
  2. Saisissez le Nom de la table. Utilisez un point pour le schéma, par exemple public.orders ou dbo.orders.
  3. Choisissez le Dialecte : MySQL / MariaDB, PostgreSQL, SQLite ou SQL Server.
  4. Choisissez le nombre de Lignes par INSERT, et désactivez CREATE TABLE si la table existe déjà.
  5. Copiez le SQL ou téléchargez-le en fichier .sql, puis exécutez-le avec votre client de base de données.

Le délimiteur est détecté automatiquement ; vous pouvez aussi imposer la virgule, le point-virgule, la tabulation ou la barre verticale. Si la première ligne contient des données et non des noms de colonnes, désactivez La première ligne est l’en-tête : les colonnes s’appelleront column_1, column_2, etc.

Exemple

Ce CSV :

id,name,price,in_stock
1,Ada's Tea,4.50,true
2,Coffee,,false

devient ce script pour PostgreSQL :

CREATE TABLE "products" (
  "id" INTEGER,
  "name" TEXT,
  "price" NUMERIC(3, 2),
  "in_stock" BOOLEAN
);

INSERT INTO "products" ("id", "name", "price", "in_stock") VALUES
  (1, 'Ada''s Tea', 4.50, TRUE),
  (2, 'Coffee', NULL, FALSE);

L’apostrophe de Ada's est doublée, le prix vide devient NULL, et les nombres et booléens sont écrits sans guillemets.

Types et dialectes

  • MySQL / MariaDB : identifiants entre accents graves, INT, DECIMAL, BOOLEAN, DATE, DATETIME, VARCHAR(255) ou TEXT ; les barres obliques inverses des chaînes sont échappées.
  • PostgreSQL : identifiants entre guillemets doubles, INTEGER, NUMERIC, BOOLEAN, DATE, TIMESTAMP et TEXT.
  • SQLite : identifiants entre guillemets doubles et classes de stockage SQLite INTEGER, REAL et TEXT ; les booléens s’écrivent 1 et 0.
  • SQL Server : identifiants entre crochets, INT, DECIMAL, BIT, DATE, DATETIME2 et NVARCHAR, avec des littéraux N'…' et 1000 lignes au plus par INSERT.
  • Les cellules vides deviennent NULL. Désactivez Cellules vides en NULL pour garder des chaînes vides dans les colonnes de texte.
  • Vérifiez les types déduits avant d’exécuter le script sur des données de production : une colonne qui ne contient que de petits nombres dans l’échantillon peut nécessiter un type plus large plus tard.

FAQ

› Quelles bases de données sont prises en charge ?

MySQL (et MariaDB), PostgreSQL, SQLite et Microsoft SQL Server. Le dialecte détermine la façon de citer les noms de tables et de colonnes, d’échapper les chaînes, les types de colonnes utilisés et l’écriture des booléens.

› Comment les types de colonnes sont-ils choisis ?

Chaque colonne est analysée : les entiers deviennent INT ou BIGINT, les décimaux DECIMAL avec une précision suffisante, true/false BOOLEAN (BIT dans SQL Server), les dates ISO DATE ou DATETIME, et tout le reste du texte. Les nombres avec des zéros en tête, comme les codes postaux, restent du texte. Désactivez Détecter les types pour que toutes les colonnes soient du texte.

› Pourquoi SQL Server est-il limité à 1000 lignes par INSERT ?

SQL Server refuse une liste VALUES de plus de 1000 lignes, donc les lots plus grands sont plafonnés à 1000 pour ce dialecte. Les autres bases acceptent des lots plus gros, mais 100 à 1000 lignes par instruction offrent un bon équilibre entre vitesse et taille.

› Mon CSV est-il envoyé quelque part ?

Non. L’analyse et la génération du SQL se font entièrement dans votre navigateur : les données ne quittent jamais votre appareil.