使用 Facebook Presto SQL 解析器生成 SQL 语句

Generate SQL statement using Facebook Presto SQL Parser

我正在努力使用 Presto 解析器生成 SQL 语句。这是用例的详细信息-

  1. 解析使用外部生成的现有 SQL 语句 前端 ui(nodejs 应用程序)。
  2. 附加新列和 where 子句条件。
  3. 重新生成 SQL 语句。这些 SQL 将在 Hive/Spark.
  4. 上执行

到目前为止,我使用 Facebook Presto parser 在第 1 步和第 2 步中取得了成功,但无法弄清楚如何生成 SQL 返回?

我可以使用其他库来生成 SQL 吗?如有任何建议,我们将不胜感激。

您可以使用 SqlFormatter class (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 中的 public API,可能会发生变化。