Requêter un CSV en SQL

Écrivez une requête SQL sur vos fichiers CSV, jointures comprises.

Traité sur cet appareil · aucun envoi de fichier

CSVTSVTXTVous pouvez aussi coller du texte ou un fichier (Ctrl+V)Confortable jusqu’à 100 Mo

750 ko à télécharger la première fois, puis conservé sur cet appareil.détails

Moteur : sql.js (SQLite) · un seul téléchargement pour tous les outils SQL.

À quoi sert cette page

Un filtre de tableur s’arrête vite : dès qu’il faut regrouper, compter, additionner par catégorie ou rapprocher deux fichiers, il faut un vrai langage. SQL est ce langage, mais l’installer suppose une base de données, un import, des droits. Ici, vos CSV deviennent des tables le temps d’une requête, dans votre navigateur : vous écrivez le SELECT, vous téléchargez le résultat en CSV, et aucun fichier n’a bougé de votre machine.

On dit aussi : faire du sql sur un fichier csv.

Comment faire

  1. Déposez un ou plusieurs fichiers CSV — chacun devient une table portant son nom.
  2. Écrivez votre requête SQL, ou laissez le champ vide pour un premier aperçu.
  3. Lancez, lisez le nombre de lignes obtenues, téléchargez le CSV du résultat.

Questions fréquentes

Comment s’appelle ma table ?

Comme votre fichier, sans son extension, en minuscules, accents et tirets remplacés par un souligné : « Ventes Mars 2026.csv » devient ventes_mars_2026. Les noms exacts, avec leurs colonnes, sont rappelés sous le résultat après le premier lancement, et dans le message d’erreur si vous vous trompez.

Puis-je joindre deux fichiers ?

Oui, et c’est le principal usage : déposez commandes.csv et clients.csv, puis écrivez SELECT c.nom, sum(o.montant) FROM commandes o JOIN clients c ON c.id_client = o.id_client GROUP BY 1. Il n’y a pas de limite au nombre de fichiers, seulement à leur poids cumulé.

Quel SQL est accepté ?

Celui de SQLite, qui couvre tout ce qu’on attend d’une analyse : jointures, agrégats, sous-requêtes, WITH, fonctions de fenêtrage (OVER), fonctions de date (strftime, julianday) et de texte (substr, replace, group_concat). Les extensions propres à PostgreSQL ou à DuckDB, non — le message d’erreur vous le dit par le nom de la fonction manquante.

Mes nombres sont-ils bien lus ?

Les colonnes numériques sont reconnues automatiquement, virgule décimale française comprise quand le fichier est séparé par des points-virgules. Restent en texte les valeurs qui commencent par un zéro ou un « + », parce qu’un code postal ou un numéro de téléphone converti en nombre est une donnée abîmée. Si une colonne mélange les deux, la page vous le signale.

Mes fichiers sont-ils envoyés quelque part ?

Non. Le moteur SQLite, environ sept cents kilo-octets, est téléchargé une fois puis conservé ; ensuite tout se passe dans l’onglet. Ouvrez l’onglet Réseau de votre navigateur pendant l’exécution : vous n’y verrez aucune requête, même sur un fichier de plusieurs dizaines de mégaoctets.

Bon à savoir

  • Le dialecte est celui de SQLite : SELECT, WHERE, GROUP BY, HAVING, ORDER BY, les jointures, les sous-requêtes, les CTE (WITH) et les fonctions de fenêtrage. Les particularités de PostgreSQL ou de DuckDB — GROUP BY ALL, QUALIFY, les tableaux — n’en font pas partie.
  • Chaque fichier déposé devient une table nommée d’après lui, accents et tirets retirés : « ventes-mars.csv » donne la table ventes_mars. Les intitulés de colonnes sont normalisés de la même façon ; la liste exacte est rappelée sous le résultat et dans les messages d’erreur.
  • Déposez plusieurs fichiers pour les joindre : c’est le principal intérêt de cette page par rapport à un filtre.
  • Le typage automatique convertit les nombres, y compris les décimales à la française (« 14,90 ») quand le séparateur du fichier n’est pas la virgule. Ce qui commence par un zéro ou un « + » reste du texte, pour ne pas abîmer les codes postaux et les numéros de téléphone.
  • Une colonne qui mêle nombres et texte est signalée sous le résultat : dans une somme, SQLite lit « 12 kg » comme 12 sans prévenir. C’est le seul endroit où le résultat peut être faux sans message.
  • Vous pouvez enchaîner plusieurs instructions séparées par des points-virgules ; c’est le tableau de la dernière qui est téléchargé. Une requête qui ne rend aucune ligne — une création de table seule — est refusée avec un message clair.
  • Confortable jusqu’à environ 100 Mo de CSV cumulés : les fichiers sont lus en flux mais la base vit dans la mémoire de l’onglet, où elle occupe environ cinq fois la taille du texte d’origine.
  • Le résultat est plafonné à 200 000 lignes. Au-delà, affinez la requête : un tableau plus grand ne s’ouvre nulle part.

Outils liés