Repolode
tobymao

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. 1

    Instale o SQLGlot pelo PyPI

    pip3 install sqlglot
  2. 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