纯 Python 编写的 SQL 解析、转译、优化与执行引擎,支持 30 多种方言互转。
tobilg/polyglot
基于 Rust 和 WASM 的 SQL 转译工具,支持 30 多种 SQL 方言之间的解析、生成、转换与格式化。
- Star
- 999
- Fork
- 76
- 未关闭 Issue
- 0
- 最近提交
- 4天前
这是什么?
Polyglot 可以在 30 多种 SQL 方言之间进行转换,涵盖 PostgreSQL、MySQL、BigQuery、Snowflake、DuckDB、Trino、ClickHouse 等。它支持把 SQL 解析为带类型的 AST,再生成回 SQL,同时提供格式化和语法、语义、基于 schema 的校验。
核心用 Rust 编写,并提供多种使用方式:Rust crate、面向 Node.js 和浏览器的 TypeScript/WASM SDK、基于 PyO3 的 Python 包、基于 C FFI 的 Go SDK,以及通过 JSON 标准输入输出工作的 WASI 命令模块。
此外,项目支持列级血缘分析并可生成 OpenLineage 兼容的数据,还提供紧凑的查询分析接口,用于获取投影、关系、CTE 和列使用情况。测试用例部分来自 sqlglot 的测试数据。
核心功能
- 01支持 30 多种方言两两之间的 SQL 转换
- 02将 SQL 解析为带类型的 AST,并能从 AST 生成 SQL
- 03支持 SQL 格式化,并可配置输入大小和 AST 节点等保护上限
- 04提供列级血缘分析及 OpenLineage 兼容的输出
- 05提供 Rust、TypeScript、Python、Go 和 WASI 等多语言接入方式
适用场景
- 将分析查询从一种数仓方言迁移到另一种
- 在浏览器或 Node.js 应用中直接转换 SQL,无需服务端往返
- 为数据平台增加 SQL 血缘或查询分析能力
- 在 CI 或开发工具中校验和格式化 SQL
快速上手
- 1
使用 npm 安装 TypeScript SDK
npm install @polyglot-sql/sdk - 2
在 TypeScript 中将 MySQL SQL 转译为 PostgreSQL
- 3
或者,安装 Python 包
pip install polyglot-sql
使用前须知
- WASI 命令模块在 README 中被标注为实验性功能。
- Go SDK 运行时需要单独构建的原生 FFI 库。
收录于专题
标签
常见问题
- polyglot 是什么?
- 基于 Rust 和 WASM 的 SQL 转译工具,支持 30 多种 SQL 方言之间的解析、生成、转换与格式化。 Polyglot 可以在 30 多种 SQL 方言之间进行转换,涵盖 PostgreSQL、MySQL、BigQuery、Snowflake、DuckDB、Trino、ClickHouse 等。它支持把 SQL 解析为带类型的 AST,再生成回 SQL,同时提供格式化和语法、语义、基于 schema 的校验。
- polyglot 可以免费使用吗?用的什么许可证?
- polyglot 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- polyglot 还在维护吗?
- 活跃维护中。polyglot 最近一次提交是在 2026年11月3日。
- polyglot 适合用来做什么?
- 将分析查询从一种数仓方言迁移到另一种 在浏览器或 Node.js 应用中直接转换 SQL,无需服务端往返 为数据平台增加 SQL 血缘或查询分析能力 在 CI 或开发工具中校验和格式化 SQL
- polyglot 怎么安装和运行?
- 使用 npm 安装 TypeScript SDK: npm install @polyglot-sql/sdk 在 TypeScript 中将 MySQL SQL 转译为 PostgreSQL 或者,安装 Python 包: pip install polyglot-sql
- 在哪里获取 polyglot?
- 源代码和安装说明在 GitHub 上:https://github.com/tobilg/polyglot
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
一个 Go 库和命令行工具,可将 ClickHouse 方言的 SQL 解析为类型化 AST,并支持格式化与美化。
用 Rust 编写的 Apache Spark 直接替代品,无需改写代码即可运行现有 PySpark 程序。
面向大规模数据处理的统一分析引擎,提供 Scala、Java、Python 和 R 接口。
可自托管的笔记本式数据管道开发环境,支持用 Python、SQL 或 R 构建、调度和调试 ETL 流程。