Выполнение CQL через сценарий оболочки?

Я пытаюсь выполнить команды CQL из сценария оболочки. Я могу подключиться к cqlsh (я использую версию CQL 1.1.18), но не могу отправлять запросы в cql.

Любые идеи или предложения, как это сделать? Нужно ли мне подключаться к Cassandra и выполнять несколько команд (выбрать/обновить) с помощью сценария оболочки??


person Immadisetty    schedule 13.08.2014    source источник


Ответы (5)


Я не уверен насчет Cassandra 1.1.18, но вы сможете сделать это с помощью флага -f для cqlsh. Допустим, у вас есть файл команд CQL с именем «commands.cql». Я могу вызвать эти команды для своего локального экземпляра Cassandra следующим образом:

$ cqlsh -f commands.cql -u myusername -p mypassword localhost

Если бы я хотел вызвать это из скрипта Bash, код скрипта выглядел бы примерно так:

#!/bin/bash
cqlsh -f commands.cql -u myusername -p mypassword localhost

Сохраните его как исполняемый файл и запустите как любой другой.

person Aaron    schedule 13.08.2014

Необходимо подключиться к cassandra и выполнить несколько команд (выбрать/обновить) с помощью сценария оболочки.

Вы можете выполнить свои команды с помощью сценария оболочки следующим образом:

echo "some QUERY; exit" | cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS'
person Aleksandr P.    schedule 07.11.2014

Команда «выход» в последнем предложении немного хакерская.

Я бы предложил использовать xargs с cqlsh -e.

echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

Недавно мне пришлось использовать этот подход при работе с докером, потому что clqsh -f не было варианта (слишком сложно настроить доступ к нужному файлу).

person arvydasj    schedule 21.12.2016

echo "some QUERY;" | xargs cqlsh CASSANDRA_HOST -u 'USER' -p 'PASS' -e

Но что, если ваш экземпляр Cassandra находится на другом сервере, где выполняется сценарий оболочки? (В частности, в StreamSets - разве вышеизложенное не требует установки Cassandra на том же сервере, чтобы у нее был доступ к библиотеке cqlsh?)

person Conor Tierney    schedule 29.03.2018

person    schedule
comment
Флаг -e был недоступен в cqlsh в версии 1.1.18 (о чем и идет речь в вопросе ОП). - person Aaron; 24.11.2015
comment
Конечно, тогда это было недоступно. Но невероятно полезно иметь лучшие результаты Google, содержащие актуальный ответ. ОП все равно не примет никакого ответа. - person Scott Prive; 01.07.2016
comment
@Aaron Моя версия Cqlsh 4.1.1. Раньше -e работало, теперь не уверен, что вызывает ошибку. Я использую питон 2.7 - person SibiCoder; 05.04.2020