无法 运行 简单的 presto shell 查询

Unable to run simple presto shell query

我正在尝试 运行 最简单的查询。 但是它不起作用。

-bash-4.2$ prestosql --execute "select 1;"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1;]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)

但是 --file 选项工作正常

-bash-4.2$ cat a.sql
select 1;
-bash-4.2$ prestosql --file a.sql > result
-bash-4.2$ cat result
"1"

有什么想法吗? 更新: 试图逃避';'带反斜杠没有帮助(

-bash-4.2$ prestosql --execute "select 1"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)
-bash-4.2$ prestosql --execute "select 1\;"
Exception in thread "main" io.airlift.airline.ParseArgumentsUnexpectedException: Found unexpected parameters: [1\;]
    at io.airlift.airline.SingleCommand.validate(SingleCommand.java:98)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:65)
    at io.airlift.airline.SingleCommand.parse(SingleCommand.java:56)
    at io.prestosql.cli.Presto.main(Presto.java:24)

不带分号 ; 或屏蔽分号 \:

 prestosql --execute "select 1"

 prestosql --execute "select 1\;"

事实证明这是 presto CLI 可执行文件 jar 包装器的问题。

包装脚本需要使用 "$@" 来保留带空格的参数(例如 SQL 查询被传递给 --execute)。

注意:通常不需要 CLI 可执行文件的包装脚本。它是可执行文件,因此您可以将其直接放在 $PATH 上。 (或者,在路径上放置一个符号链接)