JSqlParser进行解析并为您提供一种结构化的方式来查看您的 SQL。顺便说一句,JSqlParser在这方面做得很好。
但它不知道您的数据库模式,因此它无法知道 column_1 A 是否来自表 MYTABLE。一个更明显的例子是
select a, b from table1, table2
这些知识必须由您以某种方式注入:)。
要进行简单的解析,请执行以下操作
Statement statement = CCJSqlParserUtil.parse(sql);
要提取使用的列,您可以使用 JSqlParser 提供的 TablesNamesFinder 实用程序,例如
Select selectStatement = (Select) statement;
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder() {
@Override
public void visit(Column tableColumn) {
System.out.println(tableColumn);
}
};
System.out.println(" and tables=" + tablesNamesFinder.getTableList(selectStatement));
如您所见,浏览数据的一种方法是某种访问者模式。
如果您有更多问题,请随时使用 JSqlParsers gitter room 或在 github 上提交问题。