프로젝트 소개

SQLGlot은 의존성 없는 SQL 파서를 제공하여 다양한 SQL 입력을 읽고 대상 방언에서 구문 및 의미적으로 올바른 SQL을 생성할 수 있습니다. DuckDB, Presto/Trino, Spark/Databricks, Snowflake, BigQuery 등 여러 방언 간 쿼리 변환을 위한 트랜스파일러가 포함되어 있습니다. 이 라이브러리는 쿼리를 표준 AST로 재작성하는 최적화기, AST 검사, diff, SQL 표현식의 프로그래밍 방식 구축 또는 수정을 위한 유틸리티를 제공합니다. 사용자는 열과 테이블 같은 메타데이터를 추출하고, 상세 오류 메시지로 구문 오류를 감지하며, 구성 가능한 경고 또는 오류 수준을 통해 지원되지 않는 기능을 처리할 수 있습니다. SQLGlot은 또한 Python 사전에 대해 SQL을 평가하는 경량 실행기를 포함하여 테스트 및 프로토타이핑에 유용합니다. 사용자 정의 방언은 Dialect 클래스를 서브클래싱하여 추가할 수 있으며, 플러그인 방언은 진입점을 통해 배포할 수 있습니다. 성능 벤치마크는 순수 Python 버전이 경쟁력이 있음을 보여주며, mypyc 컴파일 변형은 약 3-5배 속도 향상을 제공합니다. 이 프로젝트는 SQLMesh, Apache Superset, Dagster, Ibis, dlt와 같은 도구에서 사용되며, 광범위한 문서, 테스트 스위트, 간격 단순화를 위한 dateutil과 같은 선택적 의존성을 제공합니다.