Экспорт результата запроса cassandra в файл csv
Я новичок в cassandra, и мне нужно экспортировать результат конкретного запроса в файл csv.
Я нашел команду COPY
, но (из того, что я понимаю) она позволяет вам только скопировать уже существующую таблицу в файл csv, и я хочу, чтобы скопировать прямое ядро моего запроса в файл csv, есть ли способ сделать это с помощью команды COPY
или другим способом?
Моя команда - стиль (select column1, column2 from table where condition = xy
), и я использую cqlsh
.
Ответы
Ответ 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
- Используйте DevCenter и выполните запрос. Щелкните правой кнопкой мыши на выходе и выберите "Скопировать все как CSV", чтобы вставить вывод в CSV.
![введите описание изображения здесь]()
Ответ 3
Я просто написал инструмент для экспорта запроса CQL в формат CSV и JSON. Попробуйте:)
https://github.com/tenmax/cqlkit
Ответ 4
Я считаю, что DevCenter также позволяет копировать в CSV.
http://www.datastax.com/what-we-offer/products-services/devcenter
Ответ 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