Подтвердить что ты не робот

Экспорт результата запроса cassandra в файл csv

Я новичок в cassandra, и мне нужно экспортировать результат конкретного запроса в файл csv.

Я нашел команду COPY, но (из того, что я понимаю) она позволяет вам только скопировать уже существующую таблицу в файл csv, и я хочу, чтобы скопировать прямое ядро ​​моего запроса в файл csv, есть ли способ сделать это с помощью команды COPY или другим способом?

Моя команда - стиль (select column1, column2 from table where condition = xy), и я использую cqlsh.

4b9b3361

Ответ 1

Если вы не против своих данных, используя канал ('|') в качестве разделителя, вы можете попробовать использовать флаг -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 не имеют флага -e. Для более старых версий cqlsh вы можете поместить свою команду в файл и использовать флаг -f.

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

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

Ответ 2

  • Используйте команду 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.

введите описание изображения здесь

Ответ 3

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

https://github.com/tenmax/cqlkit

Ответ 5

В окнах двойные кавычки должны использоваться, чтобы заключить CQL.

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

Ответ 6

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

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

select id from wiki.solr limit 100;

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

cqlsh < select.cql

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

Ответ 7

Невозможно комментировать... Чтобы решить проблему "БОЛЬШЕ", если в строке более 100 строк, просто добавьте "paging off" перед SQL.

Что-то вроде

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

Это приведет к некоторому беспорядку в начале выходного файла, но может быть легко удалено впоследствии.

Ответ 8

Вы можете использовать команду COPY для создания файла CSV. например, скопировать таблицу с выбранными столбцами. Столбцы не обязательны, если вы выберете их, будет выбран каждый столбец.

COPY TABLE (COL1, COL2) TO 'filename.csv' HEADER=TRUE/FALSE

Для получения дополнительной информации https://docs.datastax.com/en/cql/3.3/cql/cql_reference/cqlshCopy.html

Ответ 9

Человек, спрашивающий, попросил CSV не текст.

Я сделал этот хак, чтобы получить свои результаты. Это сработало для меня, и я перешел к своему дню.

me:~/MOOSE2# echo "USE ████it; select * from samples_daily_buffer where dog_id=██48;" | cqlsh --cqlversion="3.4.4" cassandra0.stage.███████ | sed -e "s/| */,/g" | sed -e "s/^ *//g" | tail -n +4 >./myfile.csv