Работа Big Query в сценарии оболочки - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь автоматизировать задание Big Query в сценарии оболочки, но я получаю ошибки при попытке сделать это.Я читаю локальный CSV-файл с двумя столбцами, читаю построчно и обновляю значения следующим скриптом:

#!/bin/bash
IFS=","
while read f1 f2
do
        echo "De $f1 para $f2"
        bq query --use_legacy_sql=false "UPDATE agendas_usuarios.tb_usuarios SET cargo='${f2}' WHERE cargo='${f1}'"

done < cargos_ps.csv

Но я получаю синтаксическую ошибку: Незакрытый строковый литерал в [1: 47].

Я видел кое-что, что Shell Script не допускает одинарные кавычки внутри двойных кавычек, это правда?Если это так, как лучше всего выполнить эту работу в оболочке?Мне действительно нужно разрабатывать на другом языке программирования?

Мое чтение CSV правильно, мое эхо, прежде чем bq-запрос показывает правильно.

1 Ответ

0 голосов
/ 22 февраля 2019

Я не уверен, в чем заключается реальная проблема (возможно, необходимо избегать кавычек), но использование параметров запроса будет означать, что вам не нужно вводить строки в запрос напрямую, и мы надеемся, чтоизбежать проблемы, которую вы видите.Вы бы хотели что-то вроде этого:

bq query --use_legacy_sql=false \
  --parameter="cargo:STRING:${f2}" \
  --parameter="target:STRING:${f1}" \
  "UPDATE agendas_usuarios.tb_usuarios SET cargo=@cargo WHERE cargo=@target"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...