31

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

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

4

5 回答 5

48
cqlsh -e "select * from ks.table limit 1;" > ~/output
于 2015-11-02T00:58:29.137 回答
15

-f我不确定 Cassandra 1.1.18 ,但您应该能够使用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

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

于 2014-08-13T13:17:55.697 回答
7

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

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

echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
于 2014-11-07T07:39:47.357 回答
6

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

我建议使用xargswith cqlsh -e

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

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

于 2016-12-21T11:04:17.603 回答
2
echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

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

于 2018-03-29T08:47:40.917 回答