我知道我可以使用explain扩展命令获得ast。我的问题是,如何使用javaapi获得相同的结果。我的目标是获取有关查询的以下数据:数据库源和目标(如果应用)。表源和目标(如果应用)。查询中涉及的字段。我知道我可以使用regex直接从查询字符串获取上面的数据,但是我想使用javaapi。你还有别的办法吗?
fdx2calv1#
您可以使用配置单元解析器进行此操作。它只需接受查询并将其转换为类似于explain命令的ast。下面是一个简单的例子:
ParseDriver pd = new ParseDriver(); ASTNode tree = pd.parse("Select * from table1"); System.out.println(tree.dump());
这个的输出将是
nil TOK_QUERY TOK_FROM TOK_TABREF TOK_TABNAME table1 TOK_INSERT TOK_DESTINATION TOK_DIR TOK_TMP_FILE TOK_SELECT TOK_SELEXPR TOK_ALLCOLREF <EOF>
1条答案
按热度按时间fdx2calv1#
您可以使用配置单元解析器进行此操作。它只需接受查询并将其转换为类似于explain命令的ast。下面是一个简单的例子:
这个的输出将是