Export cassandra query result to a csv file
I'm new in cassandra, and I have to export the result of a specific query to a csv file.
I found the COPY
command, but (from what I understand) it allows you only to copy an already existing table to a csv file, and what I want is to copy directly the stdout of my query to the csv file. is there any way to do it with COPY
command or with another way ?
My command is style (select column1, column2 from table where condition = xy
) and I'm using cqlsh
.
If you don't mind your data using a pipe ('|') as a delimiter, you can try using the -e
flag on cqlsh. The -e
flag allows you to send a query to Cassandra from the command prompt, where you could redirect or even perform a grep/awk/whatever on your output.
$ bin/cqlsh -e'SELECT video_id,title FROM stackoverflow.videos' > output.txt
$ cat output.txt
video_id | title
--------------------------------------+---------------------------
2977b806-df76-4dd7-a57e-11d361e72ce1 | Star Wars
ab696e1f-78c0-45e6-893f-430e88db7f46 | The Witches of Whitewater
15e6bc0d-6195-4d8b-ad25-771966c780c8 | Pulp Fiction
(3 rows)
Older versions of cqlsh don't have the -e
flag. For older versions of cqlsh, you can put your command into a file, and use the -f
flag.
$ echo "SELECT video_id,title FROM stackoverflow.videos;" > select.cql
$ bin/cqlsh -f select.cql > output.txt
From here, doing a cat
on output.txt should yield the same rows as above.
- Use CAPTURE command to export the query result to a file.
cqlsh> CAPTURE cqlsh> CAPTURE '/home/Desktop/user.csv'; cqlsh> select *from user; Now capturing query output to '/home/Desktop/user.csv'.
Now, view the output of the query in /home/Desktop/user.csv
- Use DevCenter and execute a query. Right click on the output and select "Copy All as CSV" to paste the output in CSV.
I just wrote a tool to export CQL query to CSV and JSON format. Give it a try :)
https://github.com/tenmax/cqlkit