Получить запрос строки из проанализированного дерева ASTNode, используя HiveParser
Мой случай:
1. Используйте HiveParser для разбора строки SQL-запроса:SELECT pageid, adid FROM pageAds LATERAL VIEW explode(adid_list) adTable AS adid
2. После анализа я получил дерево ASTNode, например:
nil
TOK_QUERY
TOK_FROM
TOK_LATERAL_VIEW
TOK_SELECT
TOK_SELEXPR
TOK_FUNCTION
explode
TOK_TABLE_OR_COL
adid_list
adid
TOK_TABALIAS
adTable
TOK_TABREF
TOK_TABNAME
pageAds
TOK_INSERT
TOK_DESTINATION
TOK_DIR
TOK_TMP_FILE
TOK_SELECT
TOK_SELEXPR
TOK_TABLE_OR_COL
pageid
TOK_SELEXPR
TOK_TABLE_OR_COL
adid
<EOF>
3. Затем мне нужно изменить tableName от pageAds
в pageAds_uniqueSuffix
,
4. Наконец, я должен снова отменить это дерево ASTNode для строкового запроса, и оно должно выглядеть так:SELECT pageid, adid FROM pageAds_uniqueSuffix LATERAL VIEW explode(adid_list) adTable AS adid
====================================
Я сделал первые 2 шага, но действительно застрял на шаге 4.
Простая замена строки не поможет, потому что есть много ситуаций, которые не будут работать