Pular para o conteúdo

SQL sobre CSV

SQL over CSV

Executa SQL sobre arquivos CSV ou TSV soltos no navegador — SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE e JOIN de duas tabelas — com a gramática na página, sem enviar arquivos.

Solte um CSV e consulte-o com SQL, no navegador, sem nada instalado e nada enviado a servidor. Dois arquivos lhe dão um JOIN. A gramática suportada está impressa na página, o que responde “por que isso não funcionou” mais rápido do que uma mensagem de erro consegue.

🔒 Roda inteiramente no seu navegadorsqlquerycsvanalysis

Solte arquivos CSV ou TSV (pode ser mais de um)

Lido nesta aba. Nada é enviado. Arquivos salvos pelo Excel em coreano, japonês, chinês e ocidental (CP949, Shift_JIS, GBK, Windows-1252) são reconhecidos.

SQL

A sintaxe que ele aceita

SELECT [DISTINCT] coluna, expressão [AS alias], tabela.* , *
FROM tabela [alias]
[ [INNER|LEFT] JOIN tabela [alias] ON condição ]      -- no máximo duas tabelas
[WHERE condição]
[GROUP BY expressão, …] [HAVING condição]
[ORDER BY expressão|alias|número [ASC|DESC], …]
[LIMIT n [OFFSET m]]

condições:   = <> < <= > >=   AND OR NOT   IN (…)   LIKE 'Seoul%'   BETWEEN a AND b   IS [NOT] NULL
expressões:  + - * / %   || (juntar texto)   CASE WHEN … THEN … ELSE … END   CAST(x AS INTEGER|REAL|TEXT)
agregados:   COUNT(*) COUNT(DISTINCT x) SUM AVG MIN MAX GROUP_CONCAT(x, ',')
funções:     UPPER LOWER LENGTH TRIM LTRIM RTRIM SUBSTR(s, início, tamanho) LEFT RIGHT REPLACE INSTR CONCAT
             COALESCE IFNULL NULLIF IIF(condição, a, b) ROUND(x, casas) ABS FLOOR CEIL SQRT POWER MOD TYPEOF
nomes:       nomes de coluna com acento ou em coreano funcionam como estão; se tiverem espaço, escreva "nome" ou `nome`   -- comentário, /* comentário */

NULL nunca é verdadeiro em uma comparação, LIKE ignora maiúsculas e dividir por zero dá NULL. Numa consulta com agregados, uma coluna que não está no GROUP BY pega o valor da primeira linha do grupo, igual ao SQLite. Não há subconsultas nem funções de janela.

Os arquivos são lidos dentro desta aba e nunca são enviados. Os tipos das colunas são deduzidos do arquivo, então uma coluna numérica é comparada como número e uma de texto é comparada em ordem alfabética.

Como usar

  1. Solte um ou mais arquivos

    Cada um vira uma tabela com o nome do arquivo. Renomeie-a na lista acima do editor se o nome for incômodo de digitar.

  2. Escreva a consulta

    SELECT, WHERE, GROUP BY com HAVING, ORDER BY, LIMIT, CASE e um JOIN de duas tabelas. Ctrl+Enter a executa. Os botões de exemplo sob a caixa preenchem uma consulta que funciona contra os nomes das suas próprias tabelas.

  3. Leia a posição do erro

    Uma consulta que falha relata a linha e a coluna em que o parser parou, que normalmente é um token depois do erro de verdade.

  4. Exporte o resultado

    Como CSV com BOM para o Excel, ou como JSON para qualquer coisa que leia JSON.

Perguntas frequentes

Subconsultas e funções de janela são suportadas?

Não. Isto é um subconjunto de SQL escrito para este site, não o SQLite compilado para WebAssembly: SELECT com WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, CASE e um JOIN de duas tabelas, e isso é tudo. O painel de gramática é a lista exata.

Meus dados vão para um servidor?

Não. O parser e o avaliador rodam ambos nesta aba. Esse é o motivo de o conjunto de recursos ser menor que o de um banco de dados de verdade, e é também o motivo de você poder apontá-lo para um arquivo que jamais enviaria a algum lugar.

Posso usar nomes de coluna com acentos ou em coreano?

Sim, como estão. Um nome com espaço precisa de aspas — "aspas duplas" ou crases.

A mensagem de erro está em coreano

As vinte e cinco mensagens de análise e avaliação do motor de consultas são só em coreano, porque cada uma é verificada palavra por palavra nos seus testes. O painel de sintaxe ao lado do editor está escrito nos dois idiomas (inglês e coreano) e cobre o mesmo terreno.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.