druid sqlparser
JsqlParser
fdb JsqlParser
package com.alibaba.druid; import java.util.List; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.ast.statement.SQLSelect; import com.alibaba.druid.sql.ast.statement.SQLSelectItem; import com.alibaba.druid.sql.ast.statement.SQLSelectQueryBlock; import com.alibaba.druid.sql.ast.statement.SQLSelectStatement; import com.alibaba.druid.sql.parser.SQLParserUtils; import com.alibaba.druid.sql.parser.SQLStatementParser; import com.alibaba.druid.sql.visitor.SQLASTOutputVisitor; import com.alibaba.druid.util.JdbcUtils; public class ParseTest { public ParseTest() { // TODO Auto-generated constructor stub } public static void main(String[] args) { String sql = "select p, s.count as views, (select count(*) from Comments rc where rc.linkedId=p.id and rc.classcode='InfoPublishs') as commentNumber, (select count(*) from CollectIndexs rci where rci.toId=p.id and rci.classcode='InfoPublishs' and rci.type='favorite') as favorite FROM InfoPublishs p,UserScores s where p.id=s.linkedId and p.userInfo.id=s.userInfo.id and s.classCode='InfoPublishs' AND p.status=? ORDER BY p.createtime DESC"; StringBuffer select = new StringBuffer(); StringBuffer from = new StringBuffer(); StringBuffer where = new StringBuffer(); // parser得到AST SQLStatementParser parser = SQLParserUtils.createSQLStatementParser( sql, JdbcUtils.MYSQL); List<SQLStatement> stmtList = parser.parseStatementList(); // // 将AST通过visitor输出 SQLASTOutputVisitor visitor = SQLUtils.createFormatOutputVisitor(from, stmtList, JdbcUtils.MYSQL); SQLASTOutputVisitor whereVisitor = SQLUtils.createFormatOutputVisitor( where, stmtList, JdbcUtils.MYSQL); List<SQLSelectItem> items = null; for (SQLStatement stmt : stmtList) { // stmt.accept(visitor); if (stmt instanceof SQLSelectStatement) { SQLSelectStatement sstmt = (SQLSelectStatement) stmt; SQLSelect sqlselect = sstmt.getSelect(); SQLSelectQueryBlock query = (SQLSelectQueryBlock) sqlselect .getQuery(); query.getFrom().accept(visitor); query.getWhere().accept(whereVisitor); items = query.getSelectList(); } } for(SQLSelectItem s:items){ System.out.println(s.getAlias()); } System.out.println("--------------------------------"); System.out.println("from=="+from.toString()); System.out.println("select=="+select); System.out.println("where=="+where); } }
参考
http://lxy19791111.iteye.com/blog/1543223
http://my.oschina.net/taaaa/blog/74657
http://blog.csdn.net/isea533/article/details/38361911
相关推荐
支持解析sql的正确性,可以解析出sql 的列名,表名,别名,条件等,非常好用
ebase的说明文档,ebase是一个简易的SQL解析器。
java的sql解析器jsqlparser.zip java的sql解析器jsqlparser.zip
sql解析器代码,适合c++初级入门使用,包含头文件直接调用
NULL 博文链接:https://312256159-qq-com.iteye.com/blog/1562923
用500行scala代码实现SQL解析器的英文版论文,看scala强悍的算法设计。
sqlparse, python的非验证SQL解析器模块 python-sqlparse-- 解析SQL语句sqlparse是 python的非验证SQL解析器模块。 安装从 pip,运行:$ pip install --upgrade sqlparse请考虑使用
sql解析器 sql-parser 基本上是从 <flex> 一书中复制和粘贴的解析器 生成 SQL 语句的逆波兰表示法 (RPN) 与 GO 的 yacc 和 nex 集成而不是 Flex 和 BISON 我编写此代码是为了熟悉 GO 和 SQL,以便进一步开发。 这...
SQL_使用Python开发的SQL解析器和转换器
C ++ SQL解析器 这是C ++SQL解析器。 它将给定SQL查询解析为C ++对象。 它是为与集成而开发的,但也可以在其他环境中完美使用。 在2015年3月,我们还撰写了一篇简短的论文,概述了一些开发细节以及如何将其集成到...
jsqlparser sql解析器 JSqlParser is a SQL statement parser. It translates SQLs in a traversable hierarchy of Java classes. JSqlParser is not limited to one database but provides support for a lot of ...
认识 Druid Druid 是阿里巴巴... Druid SQL 解析器 Druid 作为一个数据库连接池,功能很多,但我接触 Druid 的时候,却不是因为它有世界上好的数据库连接池实现。而是因为有些开源项目(比如,mycat),借用了
使用Lemon制作的最简的SQL解析器。只支持CREATE语句。
sql解析器 Java 7 上的 SQL 解析器 部署: mvn clean install
2012年5月的C#版的开源项目,SQL美化解析功能强大,值得学习参考。
java8源码-sqlParser:使用java和antlr4的sql解析器
ebase的源代码,ebase是一个简易的SQL解析器,希望对大家有用。
FashDB、mysql-3.23.35、PostgreSQL 8.2.0、sqlite-3.5.0所使用的SQL解析器生成器分析
java写的数据库 SQL解析器 分客户端和后端底层实现