通过Shell脚本执行CQL?

时间:2014-08-13 12:32:28

标签: cassandra cql cassandra-2.0 cqlsh

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

有任何想法或建议如何进行此操作? 我是否需要连接到Cassandra并使用shell脚本执行一些命令(select / update)?

5 个答案:

答案 0 :(得分:32)

cqlsh -e "select * from ks.table limit 1;" > ~/output

答案 1 :(得分:10)

我不确定Cassandra 1.1.18,但您应该能够使用-f cqlsh标志完成此操作。假设有一个名为“commands.cql”的CQL命令文件。我可以像这样对我的本地Cassandra实例调用这些命令:

$ cqlsh -f commands.cql -u myusername -p mypassword localhost

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

#!/bin/bash
cqlsh -f commands.cql -u myusername -p mypassword localhost

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

答案 2 :(得分:4)

  

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

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

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

答案 3 :(得分:4)

"退出"在最后一个建议中的命令有点hacky。

我建议将xargscqlsh -e一起使用。

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

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

答案 4 :(得分:1)

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

但是,如果您的Cassandra实例位于执行shell脚本的其他服务器上,该怎么办? (特别是在StreamSets中 - 以上是不是要求Cassandra安装在同一台服务器上以便它可以访问cqlsh lib?)