vitess-sqlparser
用于 Go 的简单 SQL 和 DDL 解析器(由 vitess 和 TiDB 提供)这个库的灵感来自于 https://github.com/xwb1989/sqlparser
(原始来源:https://github.com/youtube/vitess/tree/master/go/vt/sqlparser)
为什么
xwb1989/sqlparser 是 Go 中著名的 sql 解析器。
但是它无法解析某些查询(例如偏移量或批量插入...),因为它自定义了 vitess 的 sql 解析器。
另外,某些库直接从 vitess sql 解析器中使用。但是 vitess 的 sql 解析器仅部分支持 DDL 解析。
我们希望完美地支持 SQL 和 DDL 的解析。
因此,我们直接使用 vitess sql 解析器,也使用 TiDB 解析器进行 DDL 解析。
比较 Go 中的 SQL 解析器库
library | supports offset (or other complexity) query | supports DDL |
---|---|---|
xwb1989/sqlparser | ✗ | △ |
zhenjl/sqlparser | ○ | △ |
knocknote/vitess-sqlparser | ○ | ○ |
安装
[注意] 要求 Go 版本高于 1.9。
go get -u github.com/knocknote/vitess-sqlparser
示例
package main import ( "fmt" "github.com/knocknote/vitess-sqlparser/sqlparser" ) func main() { stmt, err := sqlparser.Parse("select * from user_items where user_id=1 order by created_at limit 3 offset 10") if err != nil { panic(err) } fmt.Printf("stmt = %+v\n", stmt) }
(The first version translated by vz on 2020.08.12)