cqlsh имеет проблемы с выполнением с помощью cqlsh -e

Мне трудно выполнить, используя параметр -e с именем столбца в кавычках.

Я хочу выполнить что-то вроде ниже, используя уровень unix. Попытка запустить из сценария оболочки. Когда я пытаюсь поместить свои значения в кавычки, это убирает кавычки для моего столбца.

select * from keyspace.cf where "columnname"=''

Пробовал это:

cqlsh hostname -e "select * from keyspace.cf where "columnname"=''"

Он выполняется как cqlsh hostname -e 'select * from keyspace.cf, где columnname='

stdin>:1:InvalidRequest: Error from server: code=2200 [Invalid query] message="Undefined name columnaname in where clause ('columnname= 'value'')"

person cad    schedule 17.05.2017    source источник
comment
Почему вы хотите заключить имя столбца в кавычки? и какая у вас схема таблицы?   -  person Ashraful Islam    schedule 17.05.2017
comment
cqlsh hostname -e "select * from keyspace.cf where columnname='' "... вам не нужны двойные кавычки для имени столбца (пока имя столбца не указано заглавными буквами)   -  person undefined_variable    schedule 17.05.2017


Ответы (1)


Вам не нужно ставить кавычки вокруг columnname, вам просто нужно установить его и добавить к нему префикс $.

cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"

Это отрывок из написанного мной сценария под названием getVersion.sh.

#!/bin/bash

KEYSPACE="system"
TABLE="local"
COLUMN="release_version"

~/local/apache-cassandra-3.10/bin/cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"

aploetz@dockingBay94:~/scripts$ ./getVersion.sh 

 release_version
-----------------
            3.10

(1 rows)

То же самое будет работать, если ваши имена столбцов содержат кавычки. Просто не забудьте избежать их в определении переменной. Это аналогичный скрипт, но он запрашивает столбец "columnName" TEXT:

#!/bin/bash

KEYSPACE="stackoverflow"
TABLE="stuff_with_quotes"
COLUMN="\"columnName\""

~/local/apache-cassandra-3.10/bin/cqlsh -u cassandra -p cassandra -e "SELECT $COLUMN FROm $KEYSPACE.$TABLE;"
person Aaron    schedule 17.05.2017