Vai al contenuto

SQL su file CSV

SQL over CSV

Esegue SQL sui file CSV o TSV che trascini dentro — SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE e una JOIN fra due tabelle — con la grammatica scritta nella pagina.

Si trascina un CSV e lo si interroga in SQL, nel browser, senza installare nulla e senza caricare nulla. Due file danno una JOIN. La grammatica supportata è stampata nella pagina, il che risponde alla domanda «perché non ha funzionato» più in fretta di quanto possa fare un messaggio di errore.

🔒 Funziona interamente nel tuo browsersqlquerycsvanalysis

Trascina qui file CSV o TSV (anche più di uno)

Letto in questa scheda. Non viene caricato niente. I file scritti da Excel in coreano, giapponese, cinese e occidentale (CP949, Shift_JIS, GBK, Windows-1252) vengono riconosciuti.

SQL

La sintassi che accetta

SELECT [DISTINCT] colonna, espressione [AS alias], tabella.* , *
FROM tabella [alias]
[ [INNER|LEFT] JOIN tabella [alias] ON condizione ]      -- al massimo due tabelle
[WHERE condizione]
[GROUP BY espressione, …] [HAVING condizione]
[ORDER BY espressione|alias|numero [ASC|DESC], …]
[LIMIT n [OFFSET m]]

condizioni:  = <> < <= > >=   AND OR NOT   IN (…)   LIKE 'Seoul%'   BETWEEN a AND b   IS [NOT] NULL
espressioni: + - * / %   || (unire testo)   CASE WHEN … THEN … ELSE … END   CAST(x AS INTEGER|REAL|TEXT)
aggregati:   COUNT(*) COUNT(DISTINCT x) SUM AVG MIN MAX GROUP_CONCAT(x, ',')
funzioni:    UPPER LOWER LENGTH TRIM LTRIM RTRIM SUBSTR(s, inizio, lunghezza) LEFT RIGHT REPLACE INSTR CONCAT
             COALESCE IFNULL NULLIF IIF(condizione, a, b) ROUND(x, decimali) ABS FLOOR CEIL SQRT POWER MOD TYPEOF
nomi:        i nomi di colonna accentati o in hangul vanno bene così come sono; un nome con uno spazio si scrive "nome" oppure `nome`   -- commento, /* commento */

NULL non è mai vero in un confronto, LIKE non distingue maiuscole e minuscole e la divisione per zero dà NULL. In una query con aggregati, una colonna che non compare nel GROUP BY prende il valore della prima riga del gruppo, come in SQLite. Non ci sono sottoquery né funzioni finestra.

I file vengono letti dentro questa scheda e non vengono mai caricati. I tipi delle colonne sono dedotti dal file, quindi una colonna numerica si confronta come numero e una di testo in ordine alfabetico.

Come si usa

  1. Trascinare uno o più file

    Ognuno diventa una tabella con il nome del file. Si può rinominare nell’elenco sopra l’editor, se il nome è scomodo da digitare.

  2. Scrivere la query

    SELECT, WHERE, GROUP BY con HAVING, ORDER BY, LIMIT, CASE e una JOIN fra due tabelle. Ctrl+Invio esegue. I pulsanti di esempio sotto il riquadro riempiono una query funzionante scritta sui nomi delle proprie tabelle.

  3. Leggere la posizione dell’errore

    Una query fallita riporta la riga e la colonna in cui il parser si è fermato, che di solito è un token oltre l’errore vero.

  4. Esportare il risultato

    Come CSV con il BOM per Excel, oppure come JSON per qualunque cosa legga JSON.

Domande frequenti

Le sottoquery e le funzioni finestra sono supportate?

No. Questo è un sottoinsieme di SQL scritto per questo sito, non SQLite compilato in WebAssembly: SELECT con WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, CASE e una JOIN fra due tabelle, e non c’è altro. Il pannello della grammatica è l’elenco esatto.

I miei dati vanno su un server?

No. Il parser e il valutatore girano entrambi in questa scheda. È la ragione per cui l’insieme delle funzionalità è più piccolo di quello di un database vero, ed è anche la ragione per cui lo si può puntare su un file che non si caricherebbe mai da nessuna parte.

Posso usare nomi di colonna in coreano?

Sì, così come sono. Un nome che contiene uno spazio ha bisogno delle virgolette: o "doppi apici" o backtick.

Il messaggio di errore è in coreano

I venticinque messaggi di analisi e di valutazione del motore di query esistono solo in coreano, perché ciascuno è verificato parola per parola nei suoi test. Il pannello della sintassi accanto all’editor è scritto in entrambe le lingue e copre lo stesso terreno.

Può ricevere da

Dopo

Questi accettano ciò che produce questo strumento, così il risultato può passare direttamente.