Executing CQL through Shell Script?
Asked Answered
B

5

34

I am trying to execute the CQL commands from shell script. I am able to connect to the cqlsh (CQL version i'm using is 1.1.18) but unable to send the queries to cql.

Any ideas or suggestion how to proceed on this? Do I need to connect to Cassandra and execute few commands (select/update ) with shell script ??

Basia answered 13/8, 2014 at 12:32 Comment(0)
D
53
cqlsh -e "select * from ks.table limit 1;" > ~/output
Dictum answered 2/11, 2015 at 0:58 Comment(3)
The -e flag was not available on cqlsh in version 1.1.18 (which is what the OP's question is about).Marron
Sure, it wasn't available then. But it's incredibly useful to have the top Google results containing an up-to-date answer. The OP isn't going to accept any answer anyways.Indreetloire
@Marron My Cqlsh version is 4.1.1. Earlier -e used to work, Not sure what is causing the error now. I am using python 2.7Belloir
M
16

I'm not sure about Cassandra 1.1.18, but you should be able to accomplish this with the -f flag of cqlsh. Let's say have a file of CQL commands called "commands.cql". I can invoke those commands against my local Cassandra instance like this:

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

If I wanted to invoke that from within a Bash script, the script's code would look something like this:

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

Save that as an executable file, and run it like any other.

Marron answered 13/8, 2014 at 13:17 Comment(0)
P
7

Need to connect to cassandra and execute few commands (select / update ) with shell script

You can execute your commands with shell script in next way:

echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
Permanence answered 7/11, 2014 at 7:39 Comment(0)
S
6

The "exit" command in the last suggestion is a bit hacky.

I would propose using xargs with cqlsh -e.

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

I recently had to use this approach when working with docker, because clqsh -f was not an option (too complex to configure access to the file needed).

Schilt answered 21/12, 2016 at 11:4 Comment(0)
O
2
echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

But what if you Cassandra instance is on a different server to where the shell script is being executed? (Specifically in StreamSets - wouldn't the above require Cassandra installed on the same server such that it has access to the cqlsh lib?)

Oglesby answered 29/3, 2018 at 8:47 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.