0

Presto Parser を使用して SQL ステートメントを生成するのに苦労しています。ユースケースの詳細は次のとおりです-

  1. 外部フロントエンド UI (nodejs アプリ) を使用して生成された既存の SQL ステートメントを解析します。
  2. 新しい列と where 句の条件を追加します。
  3. SQL ステートメントを再生成します。これらの SQL は Hive/Spark で実行されます。

これまでのところ、 Facebook Presto パーサーを使用してステップ 1 と 2 で成功しましたが、SQL を生成する方法を理解できませんでしたか?

他のライブラリを使用して SQL を生成しますか? ここでの提案をいただければ幸いです。

4

1 に答える 1

3

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 ではなく、変更される可能性があることに注意してください。

于 2020-08-17T18:49:39.483 に答える