Команда Cassandra CLI с cqlsh -e как объявить

В моей таблице Cassandra все столбцы были написаны в верхнем регистре. Когда мы попытались выбрать столбцы в терминале cqlsh, мы смогли выбрать эти столбцы. но когда мы попытались вывести тот же запрос на основе cqlsh -e, столкнулись с некоторой проблемой с экранированием символа. Пожалуйста, предложите по этому поводу.

cqlsh:key1> select "PLAN_ID" ,"A_ADVERTISER_ID" ,"ADVERTISER_NAME"  from key1.plan_advertiser where "PLAN_ID" = '382633' and "A_ADVERTISER_ID" = 15019;

 PLAN_ID | A_ADVERTISER_ID | ADVERTISER_NAME
---------+-----------------+----------------------
  382633 |           15019 | Hanesbrands, Updated

NMH206576286LM:sparklatest0802 KarthikeyanDurairaj$ cqlsh -e 'select "PLAN_ID" ,
  "A_ADVERTISER_ID" ,"ADVERTISER_NAME"  from key1.plan_advertiser 
  where "PLAN_ID" = '382633' and "A_ADVERTISER_ID" = 15019'
<stdin>:1:InvalidRequest: Error from server: code=2200 [Invalid query] 
  message="Invalid INTEGER constant (382633) for "PLAN_ID" of type text"

NMH206576286LM:sparklatest0802 KarthikeyanDurairaj$ 

С уважением Картикеян Расипалаям Дураирадж


person Karthikeyan Rasipalay Durairaj    schedule 15.08.2018    source источник


Ответы (1)


cqlsh может быть немного сложнее в этом отношении. Хотя он не позволяет вам избегать одинарных кавычек, он позволяет избегать двойных кавычек. Это работает для меня:

$ bin/cqlsh -u cassdba -p flynnLives -e "SELECT * FROM stackoverflow.plan_advertiser
   where \"PLAN_ID\" = '382633' and \"A_ADVERTISER_ID\" = 15019"

 PLAN_ID | A_ADVERTISER_ID | ADVERTISER_NAME
---------+-----------------+----------------------
  382633 |           15019 | Hanesbrands, Updated

(1 rows)

Таким образом, мы переключаемся с одинарных кавычек на двойные кавычки для оператора CQL, используем одинарные кавычки для значений столбцов, а затем избегаем двойных кавычек вокруг имен столбцов.

person Aaron    schedule 15.08.2018
comment
@KarthikeyanDurairaj Отлично, рад помочь! - person Aaron; 15.08.2018