我正在努力使用 Presto Parser 生成 SQL 语句。以下是用例详细信息-
- 解析使用外部前端 ui(nodejs 应用程序)生成的现有 SQL 语句。
- 追加新列和 where 子句条件。
- 重新生成 SQL 语句。这些 SQL 将在 Hive/Spark 上执行。
到目前为止,我使用Facebook Presto 解析器在步骤 1 和 2 上取得了成功,但无法弄清楚如何生成 SQL?
我应该使用其他库来生成 SQL 吗?这里的任何建议将不胜感激。
我正在努力使用 Presto Parser 生成 SQL 语句。以下是用例详细信息-
到目前为止,我使用Facebook Presto 解析器在步骤 1 和 2 上取得了成功,但无法弄清楚如何生成 SQL?
我应该使用其他库来生成 SQL 吗?这里的任何建议将不胜感激。
您可以使用 SqlFormatter 类(https://github.com/prestosql/presto/blob/master/presto-parser/src/main/java/io/prestosql/sql/SqlFormatter.java)从解析的语法树转换返回 SQL 文本:
SqlParser parser = new SqlParser();
Statement statement = parser.createStatement("SELECT * FROM t WHERE v = 0", new ParsingOptions());
String formatted = SqlFormatter.formatSql(statement);
请记住,这些不是 Presto 中的公共 API,可能会发生变化。