那些开源的都不太靠谱,同事推荐这个druid解析sql。试了一下确实给力。 打包方法: git clone https://github.com/alibaba/druid.git mvn install -Dmaven.javadoc.skip=true -Dmaven.test.skip=true 会安装到.m2目录,copy一个项目用 target/druid-1.0.27-SNAPSHOT-sources.jar 示例代码:
import java.util.*;

import com.alibaba.druid.stat.TableStat;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
import py4j.GatewayServer;


public class SQLParser {
    public static List get_tables(String sql){

        MySqlStatementParser parser = new MySqlStatementParser(sql);
        List statementList = parser.parseStatementList();
        SQLStatement statemen = statementList.get(0);

        MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
        statemen.accept(visitor);
        Map result = visitor.getTables();
        System.out.println("Tables : " + result);

        List list = new ArrayList<>();
        for ( TableStat.Name name : result.keySet() ) {
            System.out.println( name );
            list.add(name.getName());
        }
        return list;

    }

    public static void main(String[] args){
        GatewayServer gatewayServer = new GatewayServer(new SQLParser());
        gatewayServer.start();
        System.out.println("Gateway Server Started");

    }
}
打包命令: javac -cp .:./py4j0.10.4.jar:./druid-1.0.27-SNAPSHOT.jar:$CLASSPATH SQLParser.java java -cp .:./py4j0.10.4.jar:./druid-1.0.27-SNAPSHOT.jar:$CLASSPATH SQLParser

上一篇:
下一篇:

相关文章:

Categories: 博客记录

0 Responses so far.

Leave a Reply