通过Shell脚本执行CQL?

Imm*_*tty 22 cql cassandra cqlsh cassandra-2.0

我试图从shell脚本执行CQL命令.我能够连接到cqlsh(我正在使用的CQL版本是1.1.18)但无法将查询发送到cql.

任何想法或建议如何继续这个?我是否需要连接到Cassandra并使用shell脚本执行一些命令(选择/更新)?

小智 35

cqlsh -e "select * from ks.table limit 1;" > ~/output
Run Code Online (Sandbox Code Playgroud)

  • 当然,它当时不可用.但让谷歌的最高结果包含最新答案非常有用.OP无论如何都不会接受任何答案. (7认同)

Aar*_*ron 10

我不确定Cassandra 1.1.18,但你应该能够用-f旗帜来完成这个cqlsh.假设有一个名为"commands.cql"的CQL命令文件.我可以像这样对我的本地Cassandra实例调用这些命令:

$ cqlsh -f commands.cql -u myusername -p mypassword localhost
Run Code Online (Sandbox Code Playgroud)

如果我想从Bash脚本中调用它,脚本的代码将如下所示:

#!/bin/bash
cqlsh -f commands.cql -u myusername -p mypassword localhost
Run Code Online (Sandbox Code Playgroud)

将其保存为可执行文件,并像其他任何文件一样运行.


Ale*_* P. 6

需要连接到 cassandra 并使用 shell 脚本执行一些命令(选择/更新)

您可以通过以下方式使用 shell 脚本执行命令:

echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
Run Code Online (Sandbox Code Playgroud)


小智 6

最后一个建议中的“退出”命令有点老套。

我建议使用xargswith cqlsh -e

echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

我最近在使用 docker 时不得不使用这种方法,因为clqsh -f这不是一个选项(配置对所需文件的访问太复杂了)。