Sobre o projeto

SQLGlot fornece um parser SQL sem dependências que pode ler uma ampla variedade de entradas SQL e gerar SQL sintática e semanticamente correto nos dialetos de destino. Ele inclui um transpilador para converter consultas entre dialetos como DuckDB, Presto/Trino, Spark/Databricks, Snowflake, BigQuery e muitos outros. A biblioteca oferece um otimizador que reescreve consultas em uma AST canônica, utilitários para introspecção de AST, comparação (diffing) e construção ou modificação programática de expressões SQL. Os usuários podem extrair metadados como colunas e tabelas, detectar erros de sintaxe com mensagens detalhadas e lidar com recursos não suportados por meio de níveis configuráveis de aviso ou erro. SQLGlot também inclui um executor leve para avaliar SQL contra dicionários Python, útil para testes e prototipagem. Dialetos personalizados podem ser adicionados subclassificando a classe Dialect, e dialetos de plugin podem ser distribuídos via entry points. Benchmarks de desempenho mostram que a versão pura em Python é competitiva, enquanto a variante compilada com mypyc oferece melhorias de velocidade de aproximadamente 3 a 5 vezes. O projeto é usado por ferramentas como SQLMesh, Apache Superset, Dagster, Ibis e dlt, e fornece documentação extensa, um conjunto de testes e dependências opcionais como dateutil para simplificação de intervalos.