Ответ 1
cqlsh -e "select * from ks.table limit 1;" > ~/output
Я пытаюсь выполнить команды CQL из оболочки script. Я могу подключиться к cqlsh (CQL-версия, которую я использую, это 1.1.18), но не могу отправить запросы в cql.
Любые идеи или предложения о том, как действовать дальше? Нужно ли подключиться к Cassandra и выполнить несколько команд (выбрать/обновить) с помощью оболочки script??
cqlsh -e "select * from ks.table limit 1;" > ~/output
Я не уверен в Cassandra 1.1.18, но вы можете сделать это с помощью флага -f
cqlsh
. Пусть, скажем, файл CQL-команд под названием "commands.cql". Я могу вызвать эти команды против моего локального экземпляра Cassandra следующим образом:
$ cqlsh -f commands.cql -u myusername -p mypassword localhost
Если бы я хотел вызвать это из Bash script, код script выглядел бы примерно так:
#!/bin/bash
cqlsh -f commands.cql -u myusername -p mypassword localhost
Сохраните это как исполняемый файл и запустите его, как и любой другой.
Вам нужно подключиться к cassandra и выполнить несколько команд (выбрать/обновить) с помощью оболочки script
Вы можете выполнить свои команды с помощью оболочки script следующим образом:
echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
Команда "exit" в последнем предложении немного взломана.
Я бы предложил использовать xargs
с cqlsh -e
.
echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e
Недавно мне пришлось использовать этот подход при работе с docker, потому что clqsh -f
не был вариантом (слишком сложным для настройки доступа к файлу).