在进入MySQL之前解析SQL查询

时间:2018-07-20 04:46:25

标签: mysql go

在我的Go应用中,我希望能够在执行之前分析SQL查询。 我想得到: 类型(更新,插入,删除等)。这很容易,但后续步骤却不容易。 受影响的表, 要更新的列(在插入/更新时) 最重要的-条件,列和值列表。

是否有用于此的go库?

传递sql查询并获取有关此查询的信息的某些结构

1 个答案:

答案 0 :(得分:0)

是的,您有sqlparser个golang。

请注意,sqlparser已从数据库集群系统vitess中拉出

您可以像使用sql解析器一样

reader := strings.NewReader("INSERT INTO table1 VALUES (1, 'a');")

tokens := sqlparser.NewTokenizer(reader)
for {
    stmt, err := sqlparser.ParseNext(tokens)
    if err == io.EOF {
        break
    }
    // Do your logics with the statements.
}