Repolode
tobilg

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

    使用 npm 安装 TypeScript SDK

    npm install @polyglot-sql/sdk
  2. 2

    在 TypeScript 中将 MySQL SQL 转译为 PostgreSQL

  3. 3

    或者,安装 Python 包

    pip install polyglot-sql

使用前须知

  • WASI 命令模块在 README 中被标注为实验性功能。
  • Go SDK 运行时需要单独构建的原生 FFI 库。

收录于专题

标签

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

常见问题

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 数据每日更新。

相关项目