Saltar al contenido

Consultas SQL sobre un CSV

SQL over CSV

Ejecuta SQL sobre archivos CSV o TSV soltados en la página —SELECT, WHERE, GROUP BY/HAVING, ORDER BY, LIMIT, CASE y un JOIN de dos tablas— con la gramática admitida escrita a la vista.

Suelta un CSV y consúltalo con SQL, en el navegador, sin instalar nada y sin subir nada. Dos archivos te dan un JOIN. La gramática admitida está impresa en la página, lo que responde «por qué no funcionó eso» más rápido de lo que puede un mensaje de error.

🔒 Se ejecuta por completo en tu navegadorsqlquerycsvanalysis

Suelta archivos CSV o TSV (puede ser más de uno)

Se lee en esta pestaña. No se sube nada. Se reconocen los archivos guardados por Excel en coreano, japonés, chino y occidental (CP949, Shift_JIS, GBK, Windows-1252).

SQL

La sintaxis que acepta

SELECT [DISTINCT] columna, expresión [AS alias], tabla.* , *
FROM tabla [alias]
[ [INNER|LEFT] JOIN tabla [alias] ON condición ]      -- dos tablas como mucho
[WHERE condición]
[GROUP BY expresión, …] [HAVING condición]
[ORDER BY expresión|alias|número [ASC|DESC], …]
[LIMIT n [OFFSET m]]

condiciones: = <> < <= > >=   AND OR NOT   IN (…)   LIKE 'Seoul%'   BETWEEN a AND b   IS [NOT] NULL
expresiones: + - * / %   || (unir texto)   CASE WHEN … THEN … ELSE … END   CAST(x AS INTEGER|REAL|TEXT)
agregados:   COUNT(*) COUNT(DISTINCT x) SUM AVG MIN MAX GROUP_CONCAT(x, ',')
funciones:   UPPER LOWER LENGTH TRIM LTRIM RTRIM SUBSTR(s, inicio, longitud) LEFT RIGHT REPLACE INSTR CONCAT
             COALESCE IFNULL NULLIF IIF(condición, a, b) ROUND(x, decimales) ABS FLOOR CEIL SQRT POWER MOD TYPEOF
nombres:     los nombres de columna con acentos o en coreano valen tal cual; si llevan un espacio, escríbelos como "nombre" o `nombre`   -- comentario, /* comentario */

NULL nunca es verdadero en una comparación, LIKE no distingue mayúsculas y dividir por cero da NULL. En una consulta con agregados, una columna que no está en el GROUP BY toma el valor de la primera fila del grupo, igual que en SQLite. No hay subconsultas ni funciones de ventana.

Los archivos se leen dentro de esta pestaña y no se suben nunca. Los tipos de las columnas se deducen del archivo, así que una columna numérica se compara como números y una de texto se compara alfabéticamente.

Cómo se usa

  1. Suelta uno o más archivos

    Cada uno se convierte en una tabla con el nombre del archivo. Renómbrala en la lista de encima del editor si el nombre es incómodo de escribir.

  2. Escribe la consulta

    SELECT, WHERE, GROUP BY con HAVING, ORDER BY, LIMIT, CASE y un JOIN de dos tablas. Ctrl+Intro la ejecuta. Los botones de ejemplo bajo la caja rellenan una consulta que funciona con los nombres de tus propias tablas.

  3. Lee la posición del error

    Una consulta fallida informa de la línea y la columna donde se detuvo el analizador, que suele ser un token después del error real.

  4. Exporta el resultado

    Como CSV con BOM para Excel, o como JSON para cualquier cosa que lea JSON.

Preguntas frecuentes

¿Se admiten subconsultas y funciones de ventana?

No. Esto es un subconjunto de SQL escrito para este sitio, no SQLite compilado a WebAssembly: SELECT con WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, CASE y un JOIN de dos tablas, y eso es todo. El panel de gramática es la lista exacta.

¿Mis datos van a un servidor?

No. El analizador y el evaluador corren los dos en esta pestaña. Esa es la razón por la que el conjunto de funciones es más pequeño que el de una base de datos real, y también la razón por la que puedes apuntarlo a un archivo que nunca subirías.

¿Puedo usar nombres de columna con tildes o en coreano?

Sí, tal cual. Un nombre con un espacio necesita comillas: «comillas dobles» o acentos graves.

El mensaje de error está en coreano

Los veinticinco mensajes de análisis y evaluación del motor de consultas están solo en coreano, porque cada uno se comprueba palabra por palabra en sus pruebas. El panel de sintaxis junto al editor está escrito en los dos idiomas y cubre el mismo terreno.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.