web-dev-qa-db-fra.com

Exécution de CQL via Shell Script?

J'essaie d'exécuter les commandes CQL à partir du script Shell .. Je peux me connecter au cqlsh (la version CQL que j'utilise est la 1.1.18) mais je ne peux pas envoyer les requêtes à cql.

Avez-vous des idées ou des suggestions sur la façon de procéder? Dois-je me connecter à Cassandra et exécuter quelques commandes (sélectionner/mettre à jour) avec un script shell?

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

Je ne suis pas sûr de Cassandra 1.1.18, mais vous devriez pouvoir le faire avec le drapeau -f de cqlsh. Disons que vous avez un fichier de commandes CQL appelé "orders.cql". Je peux appeler ces commandes contre mon instance Cassandra locale comme ceci:

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

Si je voulais invoquer cela depuis un script Bash, le code du script ressemblerait à ceci:

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

Enregistrez-le en tant que fichier exécutable et exécutez-le comme un autre.

9
Aaron

Besoin de se connecter à cassandra et d'exécuter quelques commandes (select/update) avec le script Shell

Vous pouvez exécuter vos commandes avec le script shell de la manière suivante:

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

La commande "exit" dans la dernière suggestion est un peu hacky.

Je proposerais d'utiliser xargs avec cqlsh -e.

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

J'ai récemment dû utiliser cette approche lorsque je travaillais avec docker, car clqsh -f n'était pas une option (trop complexe pour configurer l'accès au fichier requis).

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

Mais que se passe-t-il si votre instance Cassandra se trouve sur un serveur différent de celui où le script Shell est exécuté? (Spécifiquement dans StreamSets - Cassandra ne devrait-il pas être installé sur le même serveur de manière à ne pas avoir accès à la bibliothèque cqlsh?)

1
Conor Tierney