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
.
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.
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
Je viens d'écrire un outil permettant d'exporter une requête CQL au format CSV et JSON. Essaie :)
Dans Windows, les guillemets doivent être utilisés pour entourer le CQL.
cqlsh -e"SELECT video_id,title FROM stackoverflow.videos" > output.txt
Je crois que DevCenter vous permet également de copier au format CSV . http://www.datastax.com/what-we-offer/products-services/devcenter }
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.
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.