Actualizado el 2026-10-05 · Por Sergi (spnfury)
SQL es la forma más natural de hacerle una pregunta a datos tabulares: qué clientes han pedido más de tres veces, ingresos por mes, correos duplicados. No hace falta un servidor de base de datos para ello. Varias herramientas leen un CSV directamente y permiten consultarlo como si fuera una tabla.
Esta guía compara cinco, desde una herramienta de navegador para una pregunta puntual hasta DuckDB para gigabytes de datos, con el comando exacto de cada una.
| Herramienta | Dónde corre | Instalación | Tipos inferidos | JOIN | Ideal para |
|---|---|---|---|---|---|
| CSV Creator (AlaSQL) | Navegador | Ninguna | Números | No (un solo CSV) | Una pregunta rápida, datos privados |
| DuckDB CLI | Terminal | Un binario | Sí, todos | Sí | Archivos grandes, analítica |
| q (harelba/q) | Terminal | Binario o pip | Sí | Sí | Tuberías de shell |
| csvsql de csvkit | Terminal | pip | Sí | Sí | Usuarios de Python y csvkit |
| SQLite .import | Terminal | Suele venir instalado | No (todo texto) | Sí | Conservar los datos para después |
Pegas el CSV, escribes una consulta con FROM ? como nombre de tabla y pulsas Ejecutar. El motor es AlaSQL, una implementación de SQL en JavaScript, así que los datos nunca salen de la página. Las celdas que parecen números se convierten en números, lo que hace que SUM y AVG funcionen; se admiten campos entrecomillados con comas.
Cubre SELECT con WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, los agregados habituales, CASE, LIKE, IN, subconsultas y funciones de texto. Lo que no puede hacer es unir dos archivos, porque solo se carga un CSV. Los resultados se descargan como un CSV nuevo.
SELECT city, COUNT(*) AS pedidos, SUM(amount) AS ingresos FROM ? GROUP BY city ORDER BY ingresos DESC
Consultar CSV con SQL Online Gratis
DuckDB es una base de datos analítica embebida que lee archivos CSV directamente, infiere tipos incluidas las fechas y ejecuta consultas sobre gigabytes en segundos. La CLI es un único binario sin dependencias.
duckdb -c "SELECT city, COUNT(*), SUM(amount) FROM read_csv_auto('pedidos.csv') GROUP BY city ORDER BY 3 DESC"
q trata el CSV como una tabla con el nombre del archivo y acepta la sintaxis estándar de SQLite. Brilla en tuberías: haces cat de un log, lo consultas y pasas el resultado al siguiente comando.
q -H -d , "SELECT city, COUNT(*) FROM ./pedidos.csv GROUP BY city"
csvkit es una suite de Python para trabajar con CSV (csvcut, csvgrep, csvstat...). csvsql carga el archivo en una base de datos SQLite en memoria y ejecuta tu consulta.
csvsql --query "SELECT city, COUNT(*) AS n FROM pedidos GROUP BY city" pedidos.csv
SQLite viene con la mayoría de sistemas operativos. Importar un CSV crea una tabla que puedes conservar, indexar y consultar repetidamente.
sqlite3 pedidos.db .mode csv .import pedidos.csv pedidos SELECT city, COUNT(*) FROM pedidos GROUP BY city;
Sí. Consultar CSV con SQL de CSV Creator ejecuta un motor SQL en JavaScript (AlaSQL) en tu navegador: pega el CSV, escribe SELECT ... FROM ? y ejecuta. No se instala nada y no se sube nada.
SQLite es un almacén transaccional por filas que necesita importar el CSV primero y trata cada columna como texto. DuckDB es un motor analítico columnar que lee el CSV directamente, infiere tipos y ejecuta agregaciones mucho más rápido con archivos grandes. Para análisis usa DuckDB; para guardar y editar registros, SQLite.
La columna contiene valores que no son números simples: separadores de miles, símbolos de moneda, espacios. Las herramientas de navegador y q solo convierten decimales limpios. Limpia la columna o usa CAST en la consulta; a DuckDB se le puede indicar el tipo explícitamente en read_csv.
Usa una herramienta que cargue varios archivos como tablas: DuckDB (read_csv_auto en cada archivo), q (dos nombres de archivo en FROM), csvsql (pasa ambos archivos) o SQLite tras importar los dos. Las herramientas de navegador que cargan un solo CSV no pueden unir.
Solo con herramientas que se ejecutan en el navegador sin subir nada, como CSV Creator. Comprueba la pestaña de red de las herramientas de desarrollo: ninguna petición debe llevar tus datos. Para un control máximo usa una herramienta local como DuckDB o q.