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)