Repolode
tobilg

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

    Установите TypeScript SDK с помощью npm

    npm install @polyglot-sql/sdk
  2. 2

    Транспилируйте SQL из MySQL в PostgreSQL на TypeScript

  3. 3

    Или установите пакет Python

    pip install polyglot-sql

Что важно знать

  • Модуль команд WASI описан как экспериментальный.
  • Для работы Go SDK во время выполнения требуется отдельно собранная нативная библиотека FFI.

В подборках

Темы

#sql#transpiler#rust#wasm#sql-parser#data-engineering#dialect-conversion#sqlglot

Частые вопросы

Что такое 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 обновляется ежедневно.

Похожие проекты