Передача переменной в запрос в оболочке - PullRequest
0 голосов
/ 11 декабря 2019

Я запускаю код в оболочке

while read line;
do
  var="$(bq query --use_legacy_sql=false 'select count(*) from `'$line'` ')"
  echo $var

  bq query --destination_table abc:Test_vik.view --use_legacy_sql=false --append 'select table_name,'+"$var" as Count,True as Is_backup,current_timestamp as Insert_Datetime from (select * from `abc.INFORMATION_SCHEMA.VIEWS`) where table_name=  "'${line##*.}'"  '
done < count.txt

Выход в таблице равен ${var} вместо счетчика.

enter image description here

Ответы [ 2 ]

1 голос
/ 12 декабря 2019

Я пытался повторить ваш вариант использования. И я смог передать переменную в запрос через оболочку. В частности, я добавил в код vik_singh удаление пробелов, что создавало мне проблему при переносе такой переменной. Код, который я запустил, следующий:

 1) var="$(bq query --use_legacy_sql=false 'select text from `myproject.mydataset.mytable`' )"
    2) x="$(echo $var | cut -d'|' -f4 | tr -d '[:space:]')"
    3) bq query --use_legacy_sql=false 'select text, time, current_timestamp from (select * from `myproject.mydataset.mytable` where text like  "'${x}'")  '

1) В частности, я запрашивал таблицу с именами людей и временными метками, чтобы получить имена. 2) Затем я проанализировал результат, который хотел включить в следующий запрос, и очистил его от лишних символов, сохранив его в новой переменной x. 3) После того, как я запросил новую таблицу с условным значением, указанным в переменной x, и он вернул ожидаемые результаты

Perahps, я предложил бы дважды проверить синтаксис рядом с такой вставкой переменной. Я надеюсь, что это было полезно для вас

0 голосов
/ 11 декабря 2019

var = "$ (bq query --use_legacy_sql = false 'выбрать количество (*) как число из '$line'')" x = "$ (echo $ var | grep count | cut -d '|' -f4) "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...