使用 Facebook Presto SQL 解析器生成 SQL 语句
Generate SQL statement using Facebook Presto SQL Parser
我正在努力使用 Presto 解析器生成 SQL 语句。这是用例的详细信息-
- 解析使用外部生成的现有 SQL 语句
前端 ui(nodejs 应用程序)。
- 附加新列和 where 子句条件。
- 重新生成 SQL 语句。这些 SQL 将在 Hive/Spark.
上执行
到目前为止,我使用 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,可能会发生变化。
我正在努力使用 Presto 解析器生成 SQL 语句。这是用例的详细信息-
- 解析使用外部生成的现有 SQL 语句 前端 ui(nodejs 应用程序)。
- 附加新列和 where 子句条件。
- 重新生成 SQL 语句。这些 SQL 将在 Hive/Spark. 上执行
到目前为止,我使用 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,可能会发生变化。