Golang开源项目sql解析器

xSqlParser

git: https://github.com/jiunx/xsqlparser

解析SQL语句,支持mysql、oracle、sqlserver,sql92

一名golang新手的第一个开源项目,欢迎star, fork, 有什么需求、意见和建议尽管在issue里提,
我还可以通过antlr的TokenStreamRewrite来对sql的特定节点进行逻辑修改,项目内暂时还没有添加这项功能,如果需要的话我可以加上。

快速入门

安装

获取最新版本

go get github.com/jiunx/xsqlparser

运行测试

您可以使用 parser_test.go 中的测试代码来测试解析器是否正确解析了 sql 语句。

    sql := "select id,name,address from t"
    parserFactory := parser.GetParserFactoryInstance()
    mysqlParser, err := parserFactory.GetParser(util.Mysql)
    if err != nil {
        fmt.Println(err)
        return
    }
    statement, err2 := mysqlParser.Parse(context.Background(), sql)
    if err2 != nil {
        fmt.Println(err2)
    }
    fmt.Printf("%+v\n", statement)

你会得到这样的输出


    &{Sql:select id,name,address from t SqlType:select Language:mysql Tables:[t] Columns:[id name address] Results:[id name address] Ast:0xc000246c00}

下面介绍statement的结构


statement.SqlType sql的类型, 如 select, insert, update, delete, create, drop, etc.

statement.Tables  sql涉及到的表名, 如 t.

statement.Columns sql涉及到的字段名, 如 id, name, address.

statement.Results select语句的结果集, 如 id, name, address.

statement.Ast     这条sql的AST树,如果你熟悉ANTLR或者树操作的话你也可以通过listener来解析sql.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值