cassandra - que - ¿Ejecutando CQL a través de Shell Script?
mongodb español (5)
Estoy tratando de ejecutar los comandos CQL desde el script de shell. Puedo conectarme a cqlsh (la versión de CQL que estoy usando es 1.1.18) pero no puedo enviar las consultas a cql.
¿Alguna idea o sugerencia de cómo proceder en esto? ¿Necesito conectarme a Cassandra y ejecutar algunos comandos (seleccionar / actualizar) con el script de shell?
Necesita conectarse a cassandra y ejecutar algunos comandos (seleccionar / actualizar) con el script de shell
Puedes ejecutar tus comandos con shell script de la siguiente manera:
echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u ''USER'' -p ''PASS''
El comando "exit" en la última sugerencia es un poco pirateado.
Propondría usar cqlsh -e
con cqlsh -e
.
echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u ''USER'' -p ''PASS'' -e
Hace poco tuve que usar este enfoque cuando trabajaba con la clqsh -f
acoplable, porque clqsh -f
no era una opción (demasiado complejo para configurar el acceso al archivo necesario).
No estoy seguro de Cassandra 1.1.18, pero deberías poder lograr esto con la bandera -f
de cqlsh
. Digamos que tenemos un archivo de comandos CQL llamado "commands.cql". Puedo invocar esos comandos contra mi instancia local de Cassandra de esta manera:
$ cqlsh -f commands.cql -u myusername -p mypassword localhost
Si quisiera invocar eso desde un script de Bash, el código del script se vería así:
#!/bin/bash
cqlsh -f commands.cql -u myusername -p mypassword localhost
Guárdelo como un archivo ejecutable y ejecútelo como cualquier otro.
cqlsh -e "select * from ks.table limit 1;" > ~/output
echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u ''USER'' -p ''PASS'' -e
Pero, ¿qué sucede si la instancia de Cassandra se encuentra en un servidor diferente al que se ejecuta el script de shell? (Específicamente en StreamSets, ¿lo anterior no requeriría que Cassandra esté instalada en el mismo servidor de manera que tenga acceso a la biblioteca cqlsh?)