Zum Inhalt springen

SQL über CSV

SQL over CSV

Führt SQL gegen abgelegte CSV- oder TSV-Dateien aus – ohne Upload, komplett im Browser: SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE und ein Zwei-Tabellen-JOIN, mit der Grammatik auf der Seite.

Legen Sie eine CSV ab und fragen Sie sie mit SQL ab, im Browser, ohne etwas zu installieren und ohne etwas hochzuladen. Zwei Dateien geben Ihnen ein JOIN. Die unterstützte Grammatik steht auf der Seite, was „warum ging das nicht“ schneller beantwortet, als eine Fehlermeldung es kann.

🔒 Läuft vollständig in Ihrem Browsersqlquerycsvanalysis

CSV- oder TSV-Dateien ablegen (mehrere sind in Ordnung)

Wird in diesem Tab gelesen. Nichts wird hochgeladen. Dateien aus koreanischem, japanischem, chinesischem und westlichem Excel (CP949, Shift_JIS, GBK, Windows-1252) werden erkannt.

SQL

Die Syntax, die es annimmt

SELECT [DISTINCT] Spalte, Ausdruck [AS Alias], Tabelle.* , *
FROM Tabelle [Alias]
[ [INNER|LEFT] JOIN Tabelle [Alias] ON Bedingung ]      -- höchstens zwei Tabellen
[WHERE Bedingung]
[GROUP BY Ausdruck, …] [HAVING Bedingung]
[ORDER BY Ausdruck|Alias|Nummer [ASC|DESC], …]
[LIMIT n [OFFSET m]]

Bedingungen: = <> < <= > >=   AND OR NOT   IN (…)   LIKE 'Seoul%'   BETWEEN a AND b   IS [NOT] NULL
Ausdrücke:   + - * / %   || (Text verbinden)   CASE WHEN … THEN … ELSE … END   CAST(x AS INTEGER|REAL|TEXT)
Aggregate:   COUNT(*) COUNT(DISTINCT x) SUM AVG MIN MAX GROUP_CONCAT(x, ',')
Funktionen:  UPPER LOWER LENGTH TRIM LTRIM RTRIM SUBSTR(s, Start, Länge) LEFT RIGHT REPLACE INSTR CONCAT
             COALESCE IFNULL NULLIF IIF(Bedingung, a, b) ROUND(x, Stellen) ABS FLOOR CEIL SQRT POWER MOD TYPEOF
Namen:       Spaltennamen mit Umlauten oder in Hangul gehen so, wie sie sind; einen Namen mit Leerzeichen schreiben Sie als "Name" oder `Name`   -- Kommentar, /* Kommentar */

NULL ist in keinem Vergleich wahr, LIKE unterscheidet keine Groß- und Kleinschreibung, und eine Division durch null ergibt NULL. In einer Abfrage mit Aggregaten nimmt eine Spalte, die nicht im GROUP BY steht, den Wert der ersten Zeile der Gruppe — genau wie in SQLite. Unterabfragen und Fensterfunktionen gibt es nicht.

Die Dateien werden in diesem Tab gelesen und nie hochgeladen. Die Spaltentypen werden aus der Datei erkannt, eine Zahlenspalte wird also als Zahl verglichen und eine Textspalte alphabetisch.

So funktioniert es

  1. Legen Sie eine oder mehrere Dateien ab

    Jede wird zu einer Tabelle, die nach der Datei benannt ist. Benennen Sie sie in der Liste über dem Editor um, wenn der Name umständlich zu tippen ist.

  2. Schreiben Sie die Abfrage

    SELECT, WHERE, GROUP BY mit HAVING, ORDER BY, LIMIT, CASE und ein JOIN über zwei Tabellen. Strg+Eingabe führt sie aus. Die Beispielknöpfe unter dem Feld füllen eine funktionierende Abfrage gegen Ihre eigenen Tabellennamen ein.

  3. Lesen Sie die Fehlerposition

    Eine gescheiterte Abfrage meldet Zeile und Spalte, an der der Parser stehen geblieben ist, und das ist gewöhnlich ein Token hinter dem eigentlichen Fehler.

  4. Exportieren Sie das Ergebnis

    Als CSV mit BOM für Excel, oder als JSON für alles, was JSON liest.

Häufige Fragen

Werden Unterabfragen und Fensterfunktionen unterstützt?

Nein. Das ist eine für diese Website geschriebene SQL-Teilmenge, kein nach WebAssembly kompiliertes SQLite: SELECT mit WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, CASE und ein JOIN über zwei Tabellen, und das ist alles. Das Grammatik-Panel ist die genaue Liste.

Gehen meine Daten an einen Server?

Nein. Parser und Auswertung laufen beide in diesem Tab. Das ist der Grund, warum der Funktionsumfang kleiner ist als der einer echten Datenbank, und es ist auch der Grund, warum Sie es auf eine Datei loslassen können, die Sie nie hochladen würden.

Kann ich koreanische Spaltennamen verwenden?

Ja, so wie sie sind. Ein Name mit einem Leerzeichen braucht Anführungszeichen – entweder "doppelte Anführungszeichen" oder Backticks.

Die Fehlermeldung ist auf Koreanisch

Die fünfundzwanzig Parse- und Auswertungsmeldungen der Abfrage-Engine gibt es nur auf Koreanisch, weil jede in ihren Tests Wort für Wort geprüft wird. Das Syntax-Panel neben dem Editor ist in beiden Sprachen geschrieben und deckt dasselbe ab.

Eingabe aus

Danach

Diese Tools nehmen an, was dieses hier erzeugt, das Ergebnis kann also direkt weiter.