web-dev-qa-db-ja.com

シェルスクリプトを介してCQLを実行しますか?

シェルスクリプトからCQLコマンドを実行しようとしています。 cqlsh(私が使用しているCQLバージョンは1.1.18)に接続できますが、クエリをcqlに送信できません。

これを進めるためのアイデアや提案はありますか? Cassandraに接続し、シェルスクリプトでいくつかのコマンド(選択/更新)を実行する必要がありますか??

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

Cassandra 1.1.18についてはわかりませんが、-fフラグのcqlshでこれを達成できるはずです。CQLのファイルがあるとします「commands.cql」と呼ばれるコマンド。ローカルCassandraインスタンスのようにこれらのコマンドを呼び出すことができます。

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

Bashスクリプト内から呼び出したい場合、スクリプトのコードは次のようになります。

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

それを実行可能ファイルとして保存し、他のファイルと同様に実行します。

10
Aaron

シェルスクリプトを使用してcassandra=に接続し、いくつかのコマンド(選択/更新)を実行する必要があります。

次の方法でシェルスクリプトを使用してコマンドを実行できます。

echo "some QUERY; exit" | cqlsh CASSANDRA_Host -u 'USER' -p 'PASS'
4
Aleksandr P.

最後の提案の「exit」コマンドは少しハックです。

cqlsh -exargsを使用することを提案します。

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

clqsh -fはオプションではなかったため(必要なファイルへのアクセスを構成するには複雑すぎるため)、Dockerを操作するときにこのアプローチを使用する必要がありました。

4
arvydasj
echo "some QUERY;" | xargs cqlsh CASSANDRA_Host -u 'USER' -p 'PASS' -e

しかし、Cassandraインスタンスが、シェルスクリプトが実行されている場所とは異なるサーバーにある場合はどうでしょうか。 (具体的にはStreamSetsで-cqlsh libにアクセスできるように、同じサーバーにCassandraをインストールする必要はありませんか?)

2
Conor Tierney