cassandra - comandos - cqlsh commands
Exportar el resultado de la consulta de Casandra a un archivo csv (7)
Soy nuevo en Casandra y tengo que exportar el resultado de una consulta específica a un archivo csv.
Encontré el comando COPY
, pero (por lo que entiendo) solo te permite copiar una tabla ya existente en un archivo csv, y lo que quiero es copiar directamente la salida estándar de mi consulta al archivo csv. ¿Hay alguna manera de hacerlo con el comando COPY
o de otra manera?
Mi comando es estilo ( select column1, column2 from table where condition = xy
) y estoy usando cqlsh
.
- Use el comando CAPTURE para exportar el resultado de la consulta a un archivo.
cqlsh> CAPTURE cqlsh> CAPTURE ''/home/Desktop/user.csv''; cqlsh> select *from user; Now capturing query output to ''/home/Desktop/user.csv''.
Ahora, vea el resultado de la consulta en /home/Desktop/user.csv
- Usa DevCenter y ejecuta una consulta. Haga clic derecho en la salida y seleccione "Copiar todo como CSV" para pegar la salida en CSV.
Acabo de escribir una herramienta para exportar consultas CQL a formato CSV y JSON. Darle una oportunidad :)
Creo que DevCenter también te permite copiar a CSV. http://www.datastax.com/what-we-offer/products-services/devcenter
En Windows, se deben usar comillas dobles para encerrar el CQL.
cqlsh -e"SELECT video_id,title FROM .videos" > output.txt
No puedo comentar ... Para tratar el problema "MÁS" cuando hay más de 100 filas, simplemente agregue "paginación desactivada" antes del SQL.
Algo como
$ bin/cqlsh -e''PAGING OFF;SELECT video_id,title FROM .videos'' > output.txt
Esto causará un poco desordenado al principio del archivo de salida, pero puede eliminarse fácilmente después.
Si entiendo correctamente, ¿quieres redirigir tu salida a la salida estándar?
Pon tu comando cql en un archivo. Mis archivos se llaman select.cql y los contenidos son:
select id from wiki.solr limit 100;
Luego emita lo siguiente y lo llevará a la salida estándar:
cqlsh < select.cql
Espero que esto ayude. A partir de ahí, puedes canalizarlo y agregar comas, eliminar encabezados, etc.
Si no le molesta que utilicen un canal (''|'') como delimitador, puede intentar usar el indicador -e
en cqlsh. El -e
permite enviar una consulta a Cassandra desde el símbolo del sistema, donde puede redirigir o incluso realizar un grep / awk / lo que sea en su salida.
$ bin/cqlsh -e''SELECT video_id,title FROM .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)
Las versiones anteriores de cqlsh no tienen la bandera -e
. Para versiones anteriores de cqlsh, puede poner su comando en un archivo y usar el indicador -f
.
$ echo "SELECT video_id,title FROM .videos;" > select.cql
$ bin/cqlsh -f select.cql > output.txt
A partir de aquí, hacer un cat
en output.txt debería producir las mismas filas que arriba.