Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run cql files (.cql) from within cqlsh?

The problem that I am having is that I want to run the following command (and I can't):

cqlsh < cql_directory/cql_create_stuff.cql

Because I have not logged in to cqlsh.

So I logged in:

cqlsh -u 'my_username' -p 'my_super_secret_password'

and now I tried doing the command in cqlsh shell but It just responds with a syntax error.

Basically, how do I login into cqlsh and run an external CQL script in my file system?

like image 368
Charlie Parker Avatar asked Mar 19 '14 03:03

Charlie Parker


3 Answers

Use the SOURCE

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/source_r.html

You can use -f option as well to execute commands from file

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/cqlsh.html

like image 128
Mikhail Stepura Avatar answered Nov 23 '22 02:11

Mikhail Stepura


Assuming that the path of the file with the CQL commands is /mydir/myfile.cql, there are two ways:

If you are not logged in to cqlsh:

cqlsh -u 'my_username' -p 'my_password' -f /mydir/myfile.cql

If you are logged in to cqlsh:

SOURCE '/mydir/myfile.cql'

Notice the single quotation marks. The shorthand notation for $HOME (for example, '~/mydir/myfile.cql') is also supported.

Both ways also work with relative paths (to the current directory).

like image 27
Esteban Herrera Avatar answered Nov 23 '22 04:11

Esteban Herrera


Assuming your filename is "tables.cql" and it is placed as: /files/tables.cql;

A - Locally

cqlsh -f /files/tables.cql

B - Connecting To A Docker Container Running Cassandra

Assuming the name of the Docker container that which running Cassandra is "cas" (keep in mind that you can also use the hash id of the docker container if there is no name assigned to it);

docker exec -it cas cqlsh -f /files/tables.cql

As stated on other answers, -u and -p options can be added in order to use the username/password combinations.

like image 28
Levent Divilioglu Avatar answered Nov 23 '22 04:11

Levent Divilioglu