Парсер, транспилятор, оптимизатор и движок SQL на Python без зависимостей, переводящий запросы между более чем 30 диалектами SQL.
tobilg/polyglot
SQL-транспайлер на Rust/WASM для парсинга, генерации, транспиляции и форматирования SQL более чем в 30 диалектах, вдохновлённый sqlglot.
- Звёзды
- 999
- Форки
- 76
- Открытые issues
- 0
- Последний коммит
- 3 дня назад
Что это?
Polyglot преобразует SQL между более чем 30 диалектами, включая PostgreSQL, MySQL, BigQuery, Snowflake, DuckDB, Trino и ClickHouse. Он умеет разбирать SQL в типизированное AST, генерировать SQL из узлов AST, форматировать запросы и проверять их синтаксис, семантику и соответствие схеме.
Ядро написано на Rust и распространяется как crate для Rust, TypeScript/WASM SDK для Node.js и браузеров, пакет Python на базе PyO3, Go SDK поверх библиотеки с C FFI и переносимый модуль WASI, который обменивается JSON через stdin и stdout.
В проекте также есть анализ происхождения столбцов с данными в формате, совместимом с OpenLineage, и компактный API для анализа запросов, который сообщает о проекциях, связях, CTE и использовании столбцов. Тестовый набор запускается на тестовых примерах, извлечённых из sqlglot.
Ключевые возможности
- 01Транспилирует SQL между любыми двумя диалектами из более чем 30
- 02Разбирает SQL в типизированное AST и генерирует из него SQL
- 03Форматирует SQL и выводит его в удобном для чтения виде с настраиваемыми ограничениями безопасности
- 04Предоставляет анализ происхождения столбцов и JSON-данные, совместимые с OpenLineage
- 05Предлагает биндинги для Rust, TypeScript, Python, Go и WASI
Сценарии использования
- Миграция аналитических запросов с одного диалекта хранилища данных на другой
- Перевод SQL в браузерном приложении или приложении на Node.js без обращения к серверу
- Добавление анализа происхождения данных или анализа запросов на платформу данных
- Проверка и форматирование SQL в CI или инструментах разработчика
Быстрый старт
- 1
Установите TypeScript SDK с помощью npm
npm install @polyglot-sql/sdk - 2
Транспилируйте SQL из MySQL в PostgreSQL на TypeScript
- 3
Или установите пакет Python
pip install polyglot-sql
Что важно знать
- Модуль команд WASI описан как экспериментальный.
- Для работы Go SDK во время выполнения требуется отдельно собранная нативная библиотека FFI.
В подборках
Темы
Частые вопросы
- Что такое polyglot?
- SQL-транспайлер на Rust/WASM для парсинга, генерации, транспиляции и форматирования SQL более чем в 30 диалектах, вдохновлённый sqlglot. Polyglot преобразует SQL между более чем 30 диалектами, включая PostgreSQL, MySQL, BigQuery, Snowflake, DuckDB, Trino и ClickHouse. Он умеет разбирать SQL в типизированное AST, генерировать SQL из узлов AST, форматировать запросы и проверять их синтаксис, семантику и соответствие схеме.
- polyglot можно использовать бесплатно? Какая у него лицензия?
- polyglot распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- polyglot всё ещё поддерживается?
- Активно поддерживается. Последний коммит в polyglot — 3 нояб. 2026 г..
- Для чего можно использовать polyglot?
- Миграция аналитических запросов с одного диалекта хранилища данных на другой Перевод SQL в браузерном приложении или приложении на Node.js без обращения к серверу Добавление анализа происхождения данных или анализа запросов на платформу данных Проверка и форматирование SQL в CI или инструментах разработчика
- Как установить polyglot?
- Установите TypeScript SDK с помощью npm: npm install @polyglot-sql/sdk Транспилируйте SQL из MySQL в PostgreSQL на TypeScript Или установите пакет Python: pip install polyglot-sql
- Где скачать polyglot?
- Исходный код и инструкции по установке — на GitHub: https://github.com/tobilg/polyglot
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Java-парсер SQL, который преобразует SQL-операторы в дерево Java-объектов для обхода и позволяет выводить их обратно в виде SQL.
Библиотека и CLI на Go для разбора SQL-диалекта ClickHouse в типизированный AST, а также форматирования и улучшения читаемости запросов.
Полноценная замена Apache Spark на Rust, запускающая существующий код PySpark через протокол Spark Connect.
Унифицированный движок аналитики для распределённой обработки больших данных с API для Scala, Java, Python и R.
Локально разворачиваемая среда в стиле ноутбука для создания, планирования и отладки конвейеров данных на Python, SQL или R.