Go语言 代码:36. DB::异常:不支持位置选项,(BAD_ARGUMENTS)

owfi6suc  于 2023-06-19  发布在  Go
关注(0)|答案(3)|浏览(608)

我使用sys.process._创建并运行如下进程

val clickhouseClient = Process("clickhouse-client --version").!!
  println(s"************************************************** ${clickhouseClient}")

这个print语句给我的是clickhouse-client版本
但如果它执行以下操作:

val clickhouseClient = Process("clickhouse-client -q 'show databases'").!!
  println(s"************************************************** ${clickhouseClient}")

这给予ERROR-Code: 36. DB::Exception: Positional options are not supported. (BAD_ARGUMENTS)

我的目标是使用当前方法查询clickhouse-server。不知道为什么会失败

此外,在golang你会做这样的事情:

submitCommand := `
                   #!/bin/bash
                   set -euf -o pipefail
                   cat %s | clickhouse-client --host=9000 \
                                              --query="INSERT INTO some_table Format some_format" \
                                              --stacktrace
`
cmd := exec.CommandContext(ctx, "bash", "-c", submitCommand)
stdout := &strings.Builder{}
stderr := &strings.Builder{}
cmd.Stdout = stdout
cmd.Stderr = stderr
cmd.Run()

不知道如何在scala中做到这一点。做这些事情有什么更好的方法吗?
任何帮助是赞赏!!!

qgzx9mmu

qgzx9mmu1#

因此,执行以下操作解决了问题:

val commandTemplate = "show databases"
val result = Process("clickhouse-client", Seq(s"--query=$commandTemplate")).!!
println(s"The result: $result")
7ivaypg9

7ivaypg92#

我不是scalaMaven,很抱歉,但看起来这只是命令行参数的问题。这个错误来自clickhouse-client本身:
代码:36. DB::异常:不支持位置选项。
如果命令行参数不正确,我可以重现此特定错误。也可能是传递到命令行的引用的问题。

htrmnn0y

htrmnn0y3#

clickhouse-client -q show databases
Code: 36. DB::Exception: Positional options are not supported. (BAD_ARGUMENTS)

尝试

"clickhouse-client -q \'show databases\'"

相关问题