我已经在此链接中使用了presto语法,并尝试将其应用于我的需要: https://github.com/prestodb/presto/blob/master/presto-parser/src/main/antlr4/com/facebook/presto/sql/parser/SqlBase.g4
为了也支持雪花复制,我添加了以下内容: 在语句部分:
COPY INTO target = qualifiedName
('(' qualifiedName (',' qualifiedName)* ')' )?
FROM (query | source = snowflakeLocations)
~(';')*? #snowflakeCopyInto
和:
snowflakeLocations
: internal_stage | external_stage | external_location
;
internal_stage
: ((identifier '.')? '@%'? identifier ('/' identifier '/'?)? |
'@' TILDE ('/' identifier)? )
;
external_stage
: identifier ('/' identifier '/'?)?
;
external_location
: string ~(';')*?
;
现在一切正常,我能够正确解析所有内容,但它们的运行速度要慢两倍以上。
有什么想法可以提高性能吗?
谢谢, 尼尔。