mysql - 在将 SQL 查询发送到 MySQL 之前对其进行解析

标签 mysql go

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

有这方面的库吗?

传递 SQL 查询并返回一些包含有关此查询的信息的结构

最佳答案

是的,你有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.
}

关于mysql - 在将 SQL 查询发送到 MySQL 之前对其进行解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51435233/

相关文章:

mysql - SQL 查询没有返回正确的结果

javascript - 在数据库中同时搜索多个表

mongodb - 带有 golang mongo-driver 的多个 maxPoolSize 配置

go - kubernetes API中是否有通过注解获取所有服务的函数

go - 在go中将字符串转换为字节

php - MySQL INNER JOIN IN 没有得到正确的结果

java - 在Spring Security中从jdbcTemplate检索数据

java - javax.persistence 中的 ManyToMany 允许重复条目

go - 如何列出指向golang struct所有字段的指针?

firebase - 无法通过我的 firebase session 设置带有谷歌存储的存储桶