Herramienta de BI de código abierto y basada en navegador para consultar, visualizar y compartir datos de diversas fuentes SQL y NoSQL.
tobymao/sqlglot
Un parser, transpiler, optimizador y motor SQL para Python sin dependencias, que traduce consultas entre más de 30 dialectos de SQL.
- Estrellas
- 9,766
- Forks
- 1,386
- Issues abiertos
- 13
- Último commit
- hace 19 horas
¿Qué es?
SQLGlot analiza SQL y lo convierte en un árbol de expresiones, que luego genera en otro dialecto. Así, se pueden traducir consultas escritas para DuckDB, Presto o Trino, Spark o Databricks, Snowflake, BigQuery y otros sistemas. También puede dar formato al SQL, conservar comentarios cuando es posible y señalar errores de sintaxis o construcciones que no se pueden expresar en el dialecto de destino.
Además de la transpilación, la biblioteca ofrece una API programática para crear y modificar consultas, recorrer y transformar el AST, y ejecutar un optimizador que reescribe las consultas en una forma canónica cuando se proporciona información del esquema. También incluye un pequeño ejecutor SQL en memoria que ejecuta consultas sobre diccionarios de Python, útil para pruebas. Se pueden agregar dialectos personalizados mediante subclases o plugins distribuidos por separado.
El paquete no tiene dependencias obligatorias y está escrito en Python puro. También ofrece una compilación opcional con mypyc, que se instala con el extra [c], para acelerar el análisis.
Funciones clave
- 01Traduce consultas entre más de 30 dialectos de SQL.
- 02Da formato al SQL y puede poner comillas en todos los identificadores.
- 03Señala errores de sintaxis con la línea y la columna correspondientes.
- 04Advierte o genera una excepción cuando una construcción no es compatible con el dialecto de destino.
- 05Ofrece una API para crear, modificar y transformar árboles de expresiones SQL.
- 06Incluye un optimizador y un pequeño ejecutor SQL en memoria.
Casos de uso
- Migrar consultas de análisis de un motor de data warehouse, como Snowflake o BigQuery, a otro.
- Crear herramientas de datos que deban aceptar SQL de varios backends de bases de datos.
- Analizar o revisar SQL para extraer las tablas y columnas a las que hace referencia una consulta.
- Escribir pruebas unitarias para la lógica SQL con datos de Python en memoria.
Inicio rápido
- 1
Instala SQLGlot desde PyPI
pip3 install sqlglot - 2
Analiza y transpila una consulta de Spark a DuckDB en Python
python -c "import sqlglot; print(sqlglot.transpile('SELECT EPOCH_MS(1618088028295)', read='duckdb', write='hive')[0])"
Antes de usarlo
- El análisis es permisivo, por lo que puede aceptar SQL no válido que solo falle al ejecutarse.
- La cobertura de traducción es incompleta para algunos pares de dialectos, y las funciones no compatibles generan resultados aproximados junto con advertencias.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es sqlglot?
- Un parser, transpiler, optimizador y motor SQL para Python sin dependencias, que traduce consultas entre más de 30 dialectos de SQL. SQLGlot analiza SQL y lo convierte en un árbol de expresiones, que luego genera en otro dialecto. Así, se pueden traducir consultas escritas para DuckDB, Presto o Trino, Spark o Databricks, Snowflake, BigQuery y otros sistemas. También puede dar formato al SQL, conservar comentarios cuando es posible y señalar errores de sintaxis o construcciones que no se pueden expresar en el dialecto de destino.
- ¿sqlglot es gratuito? ¿Qué licencia tiene?
- sqlglot es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿sqlglot sigue mantenido?
- Mantenimiento activo. El último commit de sqlglot fue el 7 nov 2026.
- ¿Para qué puedo usar sqlglot?
- Migrar consultas de análisis de un motor de data warehouse, como Snowflake o BigQuery, a otro. Crear herramientas de datos que deban aceptar SQL de varios backends de bases de datos. Analizar o revisar SQL para extraer las tablas y columnas a las que hace referencia una consulta. Escribir pruebas unitarias para la lógica SQL con datos de Python en memoria.
- ¿Cómo se instala sqlglot?
- Instala SQLGlot desde PyPI: pip3 install sqlglot Analiza y transpila una consulta de Spark a DuckDB en Python: python -c "import sqlglot; print(sqlglot.transpile('SELECT EPOCH_MS(1618088028295)', read='duckdb', write='hive')[0])"
- ¿Dónde consigo sqlglot?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/tobymao/sqlglot
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Transpilador de SQL en Rust/WASM que analiza, genera, transpila y formatea SQL en más de 30 dialectos, inspirado en sqlglot.
Biblioteca nativa de Rust para leer y escribir tablas de Delta Lake, con bindings de Python para usarla con pandas y otras herramientas de datos.
SDK de Python para la plataforma Databricks que permite acceder mediante código a la API REST de Databricks.
Herramienta de línea de comandos que copia datos entre bases de datos, archivos y plataformas SaaS con un solo comando y sin escribir código.
Plataforma open source para mover datos en pipelines ELT desde APIs, bases de datos y archivos hacia almacenes, lagos y aplicaciones de IA.