vitess-sqlparser

适用于 Go 的简单 SQL 解析器(由 vitess 和 TiDB 提供)。「simply SQL Parser for Go ( powered by vitess and TiDB )」

Github stars Tracking Chart

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)

Main metrics

Overview
Name With Ownerblastrain/vitess-sqlparser
Primary LanguageGo
Program languageGo (Language Count: 2)
PlatformLinux, Mac, Windows
License:Apache License 2.0
所有者活动
Created At2017-08-09 08:32:20
Pushed At2022-11-14 17:12:15
Last Commit At2017-08-09 17:32:21
Release Count0
用户参与
Stargazers Count470
Watchers Count21
Fork Count81
Commits Count60
Has Issues Enabled
Issues Count23
Issue Open Count18
Pull Requests Count15
Pull Requests Open Count1
Pull Requests Close Count2
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

vitess-sqlparser

Simply SQL and DDL parser for Go (powered by vitess and TiDB )
this library inspired by https://github.com/xwb1989/sqlparser

(original source : https://github.com/youtube/vitess/tree/master/go/vt/sqlparser)

Why

xwb1989/sqlparser is famous sql parser in Go.
But it cannot parse some query (like offset or bulk insert...) because it customizes vitess's sql parser.

Also, some libraries use from vitess sql parser directly. But vitess's sql parser only partial supports DDL parsing.

We want to perfectly support parsing for SQL and DDL.
Therefore we use vitess sql parser directly and also use TiDB parser for DDL parsing.

Compare SQL parser libraries in Go