シェルスクリプトからCQLコマンドを実行しようとしています。 cqlsh(私が使用しているCQLバージョンは1.1.18)に接続できますが、クエリをcqlに送信できません。
これを進めるためのアイデアや提案はありますか? Cassandraに接続し、シェルスクリプトでいくつかのコマンド(選択/更新)を実行する必要がありますか??
cqlsh -e "select * from ks.table limit 1;" > ~/output
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
それを実行可能ファイルとして保存し、他のファイルと同様に実行します。
シェルスクリプトを使用してcassandra=に接続し、いくつかのコマンド(選択/更新)を実行する必要があります。
次の方法でシェルスクリプトを使用してコマンドを実行できます。
echo "some QUERY; exit" | cqlsh CASSANDRA_Host -u 'USER' -p 'PASS'
最後の提案の「exit」コマンドは少しハックです。
cqlsh -e
でxargs
を使用することを提案します。
echo "some QUERY;" | xargs cqlsh CASSANDRA_Host -u 'USER' -p 'PASS' -e
clqsh -f
はオプションではなかったため(必要なファイルへのアクセスを構成するには複雑すぎるため)、Dockerを操作するときにこのアプローチを使用する必要がありました。
echo "some QUERY;" | xargs cqlsh CASSANDRA_Host -u 'USER' -p 'PASS' -e
しかし、Cassandraインスタンスが、シェルスクリプトが実行されている場所とは異なるサーバーにある場合はどうでしょうか。 (具体的にはStreamSetsで-cqlsh libにアクセスできるように、同じサーバーにCassandraをインストールする必要はありませんか?)