• 请不要在回答技术问题时复制粘贴 AI 生成的内容
route
V2EX  ›  程序员

最近要基于 Java 整一个 sql 构建、sql 检验、sql 优化的功能,求各位大佬分享下好用的脚手架?

  •  
  •   route · Sep 30, 2022 · 2217 views
    This topic created in 1331 days ago, the information mentioned may be changed or developed.

    基本需求如下:

    1. 用户自己输入 sql 语句,判断 sql 语句语法,最好能帮他优化 sql 语句
    2. 也可以通过拖拉前端组件,点击某些按钮,从零生成 sql 语句

    前提:

    1. 没有实体表,可以提供表结构数据

    我在网上找的脚手架 druid parser ,apache calcite ,都是比较好的,但对于比较复杂的 sql 语句,可能就识别不出来了。而且这两个脚手架的开发 api 资料在网上也不足。

    wangyiyi10
        1
    wangyiyi10  
       Sep 30, 2022
    calcite 用过,应该不会出现 sql 识别不出来的情况吧?除非是 SQL 语法上不兼容。也就是 calcite 调用的语法标准和你执行引擎不一致。
    还有就是 SQL 优化部分,calcite 也是有的,只是如果你只有 meta 信息,基本只能做简单的基于规则的优化。
    qocja
        2
    qocja  
       Sep 30, 2022
    1. 小米和美团我记得都有类似的工具, SQLAdvisor, 另一个叫啥忘了, 自己拿 antrl 写一个也行
    qocja
        3
    qocja  
       Sep 30, 2022
    antrl->antlr
    qocja
        4
    qocja  
       Sep 30, 2022
    2. 这个就是做低代码呗, 没啥好用的脚手架, 单表简单, 多表多一个生成 DAG, 自己写了就完事
    route
        5
    route  
    OP
       Sep 30, 2022
    @wangyiyi10
    我在测试 calcite 的时候,使用 mysql 数据库执行这条语句:"SELECT @rowNum:=@rowNum + 1 AS ‘行号’,a.* FROM class a,(SELECT @rowNum:=0) b“,报错了,词法分析分析不出 @这个,另外加上转义字符可能也是别不出。但是基于 mysql 是可以执行的。
    route
        6
    route  
    OP
       Sep 30, 2022
    @qocja 感谢分享
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 17:08 · PVG 01:08 · LAX 10:08 · JFK 13:08
    ♥ Do have faith in what you're doing.