Exporter le résultat de la requête cassandra dans un fichier csv
je suis nouveau dans cassandra, et j'ai exporter le résultat d'une requête spécifique à un fichier csv.
j'ai trouvé COPY
commande, mais (d'après ce que j'ai compris) il vous permet seulement de copier une table déjà existante dans un fichier csv, et ce que je veux est de copier directement le stdout de ma requête dans le fichier csv. est-il possible de le faire avec COPY
commande ou avec un autre moyen ?
ma commande est style (select column1, column2 from table where condition = xy
) et je suis en utilisant cqlsh
.
7 réponses
si vous ne gênez pas vos données en utilisant un pipe ('|') comme délimiteur, vous pouvez essayer d'utiliser le -e
pavillon sur cqlsh. -e
flag vous permet d'envoyer une requête à Cassandra à partir de l'invite de commande, où vous pouvez rediriger ou même effectuer un grep/awk/n'importe quoi 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 le -e
drapeau. Pour les anciennes versions de cqlsh, vous pouvez mettre votre commande dans un fichier, et d'utiliser -f
drapeau.
$ echo "SELECT video_id,title FROM stackoverflow.videos;" > select.cql
$ bin/cqlsh -f select.cql > output.txt
D'ici, faire cat
sur la production.txt devrait donner les mêmes lignes comme ci-dessus.
- Utiliser CAPTURE commande 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, vue la sortie de la requête / Accueil/Bureau / utilisateur.csv
- utilisez DevCenter et exécutez une requête. Faites un clic droit sur la sortie et sélectionnez "Copier tout comme CSV" pour coller la sortie dans CSV.
je viens d'écrire un outil pour exporter la requête CQL au format CSV et JSON. Faire un essai :)
je crois que DevCenter vous permet aussi de copier vers CSV. http://www.datastax.com/what-we-offer/products-services/devcenter
dans windows, les guillemets doubles doivent être utilisés pour entourer le CQL.
cqlsh -e"SELECT video_id,title FROM stackoverflow.videos" > output.txt
si je comprends bien, vous voulez rediriger votre sortie vers stdout?
mettez votre commande cql dans un fichier. Mes fichiers s'appelle le sélectionner.cql et contenu:
select id from wiki.solr limit 100;
alors, produisez ce qui suit et vous l'obtiendrez à stdout:
cqlsh < select.cql
j'espère que cette aide. À partir de là, vous pouvez le pipe et ajouter des virgules, supprimer les en-têtes, etc.
ne peut pas commenter... Pour traiter la question "plus" quand il y a plus de 100 lignes, il suffit d'ajouter "paging off" avant le SQL.
quelque Chose comme
$ bin/cqlsh -e'PAGING OFF;SELECT video_id,title FROM stackoverflow.videos' > output.txt
cela va causer un peu de désordre au début du fichier de sortie mais peut facilement être enlevé après.