我使用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中做到这一点。做这些事情有什么更好的方法吗?
任何帮助是赞赏!!!
3条答案
按热度按时间qgzx9mmu1#
因此,执行以下操作解决了问题:
7ivaypg92#
我不是scalaMaven,很抱歉,但看起来这只是命令行参数的问题。这个错误来自clickhouse-client本身:
代码:36. DB::异常:不支持位置选项。
如果命令行参数不正确,我可以重现此特定错误。也可能是传递到命令行的引用的问题。
htrmnn0y3#
尝试