Aller au contenu

Requêtes SQL sur des CSV

SQL over CSV

Exécute du SQL sur des fichiers CSV ou TSV déposés, dans le navigateur — SELECT, WHERE, GROUP BY et HAVING, ORDER BY, LIMIT, CASE et une jointure entre deux tables — avec la grammaire affichée sur la page.

Déposez un CSV et interrogez-le en SQL, dans le navigateur, sans rien installer et sans rien envoyer. Deux fichiers vous donnent un JOIN. La grammaire prise en charge est imprimée sur la page, ce qui répond au « pourquoi cela n’a-t-il pas marché » plus vite qu’un message d’erreur ne le peut.

🔒 Fonctionne entièrement dans votre navigateursqlquerycsvanalysis

Déposez des fichiers CSV ou TSV (plusieurs, si vous voulez)

Lu dans cet onglet. Rien n’est envoyé. Les fichiers écrits par Excel en coréen, en japonais, en chinois et en occidental (CP949, Shift_JIS, GBK, Windows-1252) sont reconnus.

SQL

La syntaxe acceptée

SELECT [DISTINCT] colonne, expression [AS alias], table.* , *
FROM table [alias]
[ [INNER|LEFT] JOIN table [alias] ON condition ]      -- deux tables au maximum
[WHERE condition]
[GROUP BY expression, …] [HAVING condition]
[ORDER BY expression|alias|numéro [ASC|DESC], …]
[LIMIT n [OFFSET m]]

conditions:  = <> < <= > >=   AND OR NOT   IN (…)   LIKE 'Seoul%'   BETWEEN a AND b   IS [NOT] NULL
expressions: + - * / %   || (concaténer du texte)   CASE WHEN … THEN … ELSE … END   CAST(x AS INTEGER|REAL|TEXT)
agrégats:    COUNT(*) COUNT(DISTINCT x) SUM AVG MIN MAX GROUP_CONCAT(x, ',')
fonctions:   UPPER LOWER LENGTH TRIM LTRIM RTRIM SUBSTR(s, début, longueur) LEFT RIGHT REPLACE INSTR CONCAT
             COALESCE IFNULL NULLIF IIF(condition, a, b) ROUND(x, décimales) ABS FLOOR CEIL SQRT POWER MOD TYPEOF
noms:        les noms de colonne accentués ou en hangul passent tels quels ; un nom qui contient une espace s’écrit "nom" ou `nom`   -- commentaire, /* commentaire */

NULL n’est jamais vrai dans une comparaison, LIKE ne tient pas compte de la casse, et une division par zéro donne NULL. Dans une requête avec agrégats, une colonne absente du GROUP BY prend la valeur de la première ligne du groupe, comme dans SQLite. Il n’y a ni sous-requêtes ni fonctions de fenêtrage.

Les fichiers sont lus dans cet onglet et ne sont jamais envoyés. Le type des colonnes est déduit du fichier : une colonne numérique se compare donc comme des nombres et une colonne de texte dans l’ordre alphabétique.

Comment s’en servir

  1. Déposez un fichier ou plusieurs

    Chacun devient une table nommée d’après le fichier. Renommez-la dans la liste au-dessus de l’éditeur si le nom est pénible à taper.

  2. Écrivez la requête

    SELECT, WHERE, GROUP BY avec HAVING, ORDER BY, LIMIT, CASE et un JOIN sur deux tables. Ctrl+Entrée l’exécute. Les boutons d’exemple sous le champ remplissent une requête qui marche contre vos propres noms de tables.

  3. Lisez la position de l’erreur

    Une requête en échec indique la ligne et la colonne où l’analyseur s’est arrêté, ce qui est d’ordinaire un jeton après l’erreur réelle.

  4. Exportez le résultat

    En CSV avec une marque d’ordre des octets pour Excel, ou en JSON pour tout ce qui lit du JSON.

Questions fréquentes

Les sous-requêtes et les fonctions de fenêtrage sont-elles prises en charge ?

Non. C’est un sous-ensemble de SQL écrit pour ce site, pas SQLite compilé en WebAssembly : SELECT avec WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, CASE et un JOIN sur deux tables, et c’est tout. Le panneau de grammaire est la liste exacte.

Mes données partent-elles vers un serveur ?

Non. L’analyseur et l’évaluateur tournent tous deux dans cet onglet. C’est la raison pour laquelle l’ensemble de fonctionnalités est plus petit que celui d’une vraie base de données, et c’est aussi la raison pour laquelle vous pouvez le pointer sur un fichier que vous n’enverriez jamais.

Puis-je employer des noms de colonnes coréens ?

Oui, tels quels. Un nom contenant une espace demande des guillemets — soit des "guillemets doubles", soit des accents graves.

Le message d’erreur est en coréen

Les vingt-cinq messages d’analyse et d’évaluation du moteur de requêtes n’existent qu’en coréen, parce que chacun est vérifié mot pour mot dans ses tests. Le panneau de syntaxe à côté de l’éditeur est écrit dans les deux langues et couvre le même terrain.

À alimenter depuis

Ensuite

Ces outils acceptent ce que celui-ci produit : le résultat peut y aller directement.