export cassandra select query to csv [duplicate]

java.lang.UnsupportedClassVersionError происходит из-за более высокого JDK во время компиляции и более низкого JDK во время выполнения.

32
задан Aaron 8 May 2015 в 18:25
поделиться

7 ответов

Если вы не возражаете против своих данных, используя канал ('|') в качестве разделителя, вы можете попробовать использовать флаг -e в cqlsh. Флаг -e позволяет вам отправить запрос в Cassandra из командной строки, где вы можете перенаправить или даже выполнить grep / awk / whatever на вашем выходе.

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

Старые версии cqlsh don У меня есть флаг -e. Для более старых версий cqlsh вы можете поместить свою команду в файл и использовать флаг -f.

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

Отсюда, при создании cat на output.txt должны появляться те же строки как указано выше.

36
ответ дан Aaron 22 August 2018 в 03:23
поделиться
  • 1
    Да, это должно решить мою проблему, и это то, что я хочу сделать. кроме того, что он не распознает параметр -e. Использование: cqlsh [options] [host [port]] ----- я пропустил что-нибудь? cqlsh: ошибка: нет такой опции: -e – Dady09 13 November 2014 в 16:21
  • 2
    @ user3196353 Вы должны работать в более старой версии. Редактирование сделало ... try -f вместо файла команды. – Aaron 13 November 2014 в 16:45
  • 3
    Магия! это решает мою проблему, большое спасибо – Dady09 13 November 2014 в 16:53
  • 4
    Отлично! Рад, что смог помочь. – Aaron 13 November 2014 в 16:55
  • 5
    Это дает 100 результатов в CSV, если у нас есть больше результатов, чем тех, которые получены, нажав «БОЛЬШЕ» в интерактивном режиме, как мы можем получить их CSV? – Jagrati Gogia 29 March 2018 в 07:27
  1. Используйте команду CAPTURE для экспорта результата запроса в файл.
cqlsh> CAPTURE
cqlsh> CAPTURE '/home/Desktop/user.csv';
cqlsh> select *from user;
Now capturing query output to '/home/Desktop/user.csv'.

Теперь просмотрите вывод запроса в / home /Desktop/user.csv

  1. Используйте DevCenter и выполните запрос. Щелкните правой кнопкой мыши на выходе и выберите «Скопировать все как CSV», чтобы вставить вывод в CSV.

21
ответ дан Arun 22 August 2018 в 03:23
поделиться
  • 1
    Вариант 2 прост, за исключением того, что DevCenter ограничивает выходные строки до 1000, если вы не используете 1.6: stackoverflow.com/questions/37862375/… – Cincinnati Joe 27 March 2017 в 12:47
  • 2
    Это (вариант 1), по-видимому, намного лучше, чем принятый ответ. – Ken Williams 8 June 2018 в 15:39
  • 3
    На самом деле, я думаю, что неправильно понял - вариант 1 не выводится в формате CSV, он просто перенаправляет существующий вывод в файл, чье имя заканчивается на .csv, правильно? – Ken Williams 8 June 2018 в 16:24
  • 4
    да. вы можете использовать & quot; COPY TO & quot; для экспорта данных из таблицы в файл CSV. – Arun 8 June 2018 в 23:48

Если я правильно понимаю, вы хотите перенаправить свой вывод на stdout?

Поместите свою команду cql в файл. Мои файлы называются select.cql, а содержимое:

select id from wiki.solr limit 100;

Затем выпустите следующее, и вы получите его в stdout:

cqlsh < select.cql

Надеюсь, это поможет. Оттуда вы можете пропустить его и добавить запятые, удалить заголовки и т. Д.

3
ответ дан Bereng 22 August 2018 в 03:23
поделиться
  • 1
    Спасибо за ответ, но это не то, что мне действительно нужно, я ищу перенаправление вывода моего SQL-запроса в файл csv (stdout & gt; file.csv), поэтому я могу использовать его в других заданиях – Dady09 13 November 2014 в 15:31
  • 2
    Да, вот что это делает. Результат запроса, хранящегося в файле cql, выводится на стандартный вывод. Иногда для сложных или длинных запросов вы храните их в файле, а не записываете их в строку cmd. Затем вы можете «отправить» файл с запросом в cql, и вы получите вывод в stdout. Для однострочных и простых запросов есть и другой метод. – Bereng 14 November 2014 в 10:31
  • 3
    оглядываясь назад, вы правы, я, должно быть, неправильно понял вас в первый раз, другой ответ казался мне более понятным, извините – Dady09 18 November 2014 в 17:08

В окнах для закрытия CQL следует использовать двойные кавычки.

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

4
ответ дан Karthik Sankar 22 August 2018 в 03:23
поделиться

Я считаю, что DevCenter также позволяет копировать в CSV. http://www.datastax.com/what-we-offer/products-services/devcenter

4
ответ дан phact 22 August 2018 в 03:23
поделиться

Я просто написал инструмент для экспорта запроса CQL в формат CSV и JSON. Попробуйте:)

https://github.com/tenmax/cqlkit

7
ответ дан popcorny 22 August 2018 в 03:23
поделиться
  • 1
    Я бы попробовал ... если бы у меня был java8 :( – Dady09 12 August 2015 в 15:27
  • 2
    Похоже, это единственный ответ, который позволяет вам выводить поток в формате CSV. +1. – Ken Williams 8 June 2018 в 16:24
0
ответ дан luckyee 5 November 2018 в 02:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: