Ferramenta de BI de código aberto, acessada pelo navegador, para consultar, visualizar e compartilhar dados de diversas fontes SQL e NoSQL.
tobymao/sqlglot
Parser, transpilador, otimizador e engine SQL para Python, sem dependências, que traduz consultas entre mais de 30 dialetos SQL.
- Estrelas
- 9,766
- Forks
- 1,386
- Issues abertas
- 13
- Último commit
- há 20 horas
O que é?
O SQLGlot analisa SQL em uma árvore de expressões e gera SQL em outro dialeto. Assim, consultas escritas para DuckDB, Presto ou Trino, Spark ou Databricks, Snowflake, BigQuery e outros podem ser traduzidas entre eles. A biblioteca também pode reformatar SQL, preservar comentários da melhor forma possível e apontar erros de sintaxe ou construções que não podem ser expressas no dialeto de destino.
Além da transpilação, a biblioteca oferece uma API programática para criar e modificar consultas, percorrer e transformar a AST e executar um otimizador que reescreve consultas em uma forma canônica quando são fornecidas informações do schema. Também inclui um pequeno executor SQL em memória que executa consultas sobre dicionários Python, útil para testes. É possível adicionar dialetos personalizados por herança ou por meio de plugins distribuídos separadamente.
O pacote não tem dependências obrigatórias e é escrito em Python puro. Uma versão opcional compilada com mypyc, instalada com o extra [c], está disponível para acelerar o parsing.
Recursos principais
- 01Traduz consultas entre mais de 30 dialetos SQL.
- 02Formata SQL e pode colocar todos os identificadores entre aspas.
- 03Aponta erros de sintaxe com as posições de linha e coluna.
- 04Emite avisos ou gera erros quando uma construção não é compatível com o dialeto de destino.
- 05Oferece uma API para criar, modificar e transformar árvores de expressões SQL.
- 06Inclui um otimizador e um pequeno executor SQL em memória.
Casos de uso
- Migrar consultas analíticas de um engine de data warehouse, como Snowflake ou BigQuery, para outro.
- Criar ferramentas de dados que precisam aceitar SQL de vários backends de banco de dados.
- Fazer lint ou analisar SQL para identificar tabelas e colunas referenciadas em uma consulta.
- Escrever testes unitários para lógica SQL usando dados Python em memória.
Início rápido
- 1
Instale o SQLGlot pelo PyPI
pip3 install sqlglot - 2
Analise e transpilе uma consulta de Spark para DuckDB em Python
python -c "import sqlglot; print(sqlglot.transpile('SELECT EPOCH_MS(1618088028295)', read='duckdb', write='hive')[0])"
Antes de usar
- A análise é permissiva, então SQL inválido pode ser aceito e só falhar no momento da execução.
- A cobertura de tradução é incompleta para alguns pares de dialetos, e recursos não compatíveis geram resultados aproximados com avisos.
Em coleções
Tópicos
Perguntas frequentes
- O que é sqlglot?
- Parser, transpilador, otimizador e engine SQL para Python, sem dependências, que traduz consultas entre mais de 30 dialetos SQL. O SQLGlot analisa SQL em uma árvore de expressões e gera SQL em outro dialeto. Assim, consultas escritas para DuckDB, Presto ou Trino, Spark ou Databricks, Snowflake, BigQuery e outros podem ser traduzidas entre eles. A biblioteca também pode reformatar SQL, preservar comentários da melhor forma possível e apontar erros de sintaxe ou construções que não podem ser expressas no dialeto de destino.
- sqlglot é gratuito? Qual é a licença?
- sqlglot é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- sqlglot ainda é mantido?
- Manutenção ativa. O último commit de sqlglot foi em 7 de nov. de 2026.
- Para que posso usar sqlglot?
- Migrar consultas analíticas de um engine de data warehouse, como Snowflake ou BigQuery, para outro. Criar ferramentas de dados que precisam aceitar SQL de vários backends de banco de dados. Fazer lint ou analisar SQL para identificar tabelas e colunas referenciadas em uma consulta. Escrever testes unitários para lógica SQL usando dados Python em memória.
- Como instalar sqlglot?
- Instale o SQLGlot pelo PyPI: pip3 install sqlglot Analise e transpilе uma consulta de Spark para DuckDB em Python: python -c "import sqlglot; print(sqlglot.transpile('SELECT EPOCH_MS(1618088028295)', read='duckdb', write='hive')[0])"
- Onde consigo sqlglot?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/tobymao/sqlglot
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Transpilador de SQL em Rust/WASM que analisa, gera, transpila e formata SQL em mais de 30 dialetos, inspirado no sqlglot.
Biblioteca nativa em Rust para ler e gravar tabelas Delta Lake, com bindings Python para uso com pandas e outras ferramentas de dados.
SDK Python para a plataforma Databricks, que permite acessar a Databricks REST API por meio de código Python.
Ferramenta de linha de comando que copia dados entre bancos de dados, arquivos e plataformas SaaS com um único comando, sem precisar escrever código.
Plataforma open source de movimentação de dados para pipelines ELT, que leva dados de APIs, bancos de dados e arquivos para data warehouses, data lakes e aplicações de IA.