web-dev-qa-db-fra.com

Exporter le résultat de la requête cassandra dans un fichier csv

Je suis nouveau dans cassandra et je dois exporter le résultat d'une requête spécifique dans un fichier csv.

J'ai trouvé la commande COPY, mais (d'après ce que j'ai compris), elle vous permet uniquement de copier une table déjà existante dans un fichier CSV, et ce que je veux, c'est copier directement la sortie standard de ma requête dans le fichier CSV. est-il possible de le faire avec la commande COPY ou avec un autre moyen?

Ma commande est style (select column1, column2 from table where condition = xy) et j'utilise cqlsh.

34
Dady09

Si vos données n’utilisent pas un tuyau ('|') comme délimiteur, vous pouvez essayer d’utiliser le drapeau -e sur cqlsh. L'indicateur -e vous permet d'envoyer une requête à Cassandra à partir de la commande Invite, dans laquelle vous pouvez rediriger ou même exécuter un grep/awk/que ce soit sur votre sortie.

$ 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)

Les anciennes versions de cqlsh n'ont pas l'indicateur -e. Pour les anciennes versions de cqlsh, vous pouvez placer votre commande dans un fichier et utiliser l'indicateur -f.

$ echo "SELECT video_id,title FROM stackoverflow.videos;" > select.cql
$ bin/cqlsh -f select.cql > output.txt

À partir de là, faire une cat sur output.txt devrait générer les mêmes lignes que ci-dessus.

39
Aaron
  1. Utilisez la commande CAPTURE pour exporter le résultat de la requête dans un fichier.
cqlsh> CAPTURE
cqlsh> CAPTURE '/home/Desktop/user.csv';
cqlsh> select *from user;
Now capturing query output to '/home/Desktop/user.csv'.

Maintenant, affichez le résultat de la requête dans /home/Desktop/user.csv

  1. Utilisez DevCenter et exécutez une requête. Faites un clic droit sur la sortie et sélectionnez "Copier tout au format CSV" pour coller la sortie au format CSV.

 enter image description here

27
Arun

Je viens d'écrire un outil permettant d'exporter une requête CQL au format CSV et JSON. Essaie :)

https://github.com/tenmax/cqlkit

8
popcorny

Dans Windows, les guillemets doivent être utilisés pour entourer le CQL.

cqlsh -e"SELECT video_id,title FROM stackoverflow.videos" > output.txt

4
Karthik Sankar

Je crois que DevCenter vous permet également de copier au format CSV . http://www.datastax.com/what-we-offer/products-services/devcenter }

4
phact

Si je comprends bien, vous voulez rediriger votre sortie vers stdout?

Mettez votre commande cql dans un fichier. Mes fichiers s'appelle select.cql et le contenu est le suivant:

select id from wiki.solr limit 100;

Ensuite, lancez ce qui suit et vous le trouverez sur stdout:

cqlsh < select.cql

J'espère que ça aide. À partir de là, vous pouvez le diriger et ajouter des virgules, supprimer des en-têtes, etc.

3
Bereng

Je ne peux pas commenter ... Pour résoudre le problème "MORE" lorsqu'il y a plus de 100 lignes, ajoutez simplement "pagination off" avant le code SQL. 

Quelque chose comme

$ bin/cqlsh -e'PAGING OFF;SELECT video_id,title FROM stackoverflow.videos' > output.txt

Cela causera un peu de désordre au début du fichier de sortie mais pourra être facilement supprimé par la suite.

0
luckyee