有没有一个java解析器可以模拟mysql服务器解析器?

时间:2012-11-11 06:17:15

标签: java mysql parsing

我为mysql编写了一个数据库mid-ware。我需要确定一个sql语句isRead语句或isWrite语句并提取架构和表信息。我通过谷歌找到的一些解析器只解析DML语句。但我需要一个解析器可以解析mysql服务器可以做的所有语句。

你认为我直接在java中调用mysql解析器是一个好主意还是可能?

2 个答案:

答案 0 :(得分:0)

  

你认为我直接在java中调用mysql解析器是一个好主意还是可能?

不,我不认为这是个好主意。从Java调用C / C ++代码很少是个好主意。在这种情况下,解析器嵌入在一大堆其他代码中,并且可能能够将其分离出来。最重要的是,它会将解析树作为复杂的本机数据结构发出,难以从Java中使用。

更好的方法是为SQL提供现有的开源Java解析器,并且(随着时间的推移)添加对解析MySQL特定语句的支持。

答案 1 :(得分:0)

您可能需要考虑使用阿里巴巴Druid project中的代码。尽管设计为复杂的连接池库,但该项目支持ANSI SQL的非常高级parser and AST和MySQL,Oracle,SQL Server等非ANSI方言。该项目是开源的,具有非常自由的Apache许可证版本2.0。

图书馆这一部分的主要入口点是SQLUtils.java