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

2022-09-30 09:30:00 +08:00
 route

基本需求如下:

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

前提:

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

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

1053 次点击
所在节点    程序员
6 条回复
wangyiyi10
2022-09-30 09:43:24 +08:00
calcite 用过,应该不会出现 sql 识别不出来的情况吧?除非是 SQL 语法上不兼容。也就是 calcite 调用的语法标准和你执行引擎不一致。
还有就是 SQL 优化部分,calcite 也是有的,只是如果你只有 meta 信息,基本只能做简单的基于规则的优化。
qocja
2022-09-30 10:13:41 +08:00
1. 小米和美团我记得都有类似的工具, SQLAdvisor, 另一个叫啥忘了, 自己拿 antrl 写一个也行
qocja
2022-09-30 10:15:02 +08:00
antrl->antlr
qocja
2022-09-30 10:16:05 +08:00
2. 这个就是做低代码呗, 没啥好用的脚手架, 单表简单, 多表多一个生成 DAG, 自己写了就完事
route
2022-09-30 11:47:54 +08:00
@wangyiyi10
我在测试 calcite 的时候,使用 mysql 数据库执行这条语句:"SELECT @rowNum:=@rowNum + 1 AS ‘行号’,a.* FROM class a,(SELECT @rowNum:=0) b“,报错了,词法分析分析不出 @这个,另外加上转义字符可能也是别不出。但是基于 mysql 是可以执行的。
route
2022-09-30 11:48:18 +08:00
@qocja 感谢分享

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/883955

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX