командная строка большого запроса google, выполняющая сложный запрос, выдающая неожиданную ошибку '(' - PullRequest
0 голосов
/ 13 декабря 2018

У меня следующий запрос командной строки, который нужно выполнить в консоли больших запросов Google.Он состоит из большого числа REGEXP. Выдает ошибку

-bash: синтаксическая ошибка рядом с неожиданным токеном `('

bq query --use_legacy_sql=false select s1.ID., REGEXP_REPLACE(REGEXP_REPLACE(UPPER(s1.d),r'(\|/|\?|\-|&)', ""),r'\s+',"_") D, CAST(s1.F as INT64) F FROM `myproject.mydataset.mytable` s1 where regexp_contains(s1.f,r'^[+-]?[[:digit:]]+$') and exists ( select xyz from `myproject.mydataset.mytable`  s2 where s1.d=s2.d)

Я хочу выполнить этот запрос в командной строке.

query

select s1.ID., REGEXP_REPLACE(REGEXP_REPLACE(UPPER(s1.d),r'(\|/|\?|\-|&)', ""),r'\s+',"_") D, CAST(s1.F as INT64) F FROM `myproject.mydataset.mytable` s1 where regexp_contains(s1.f,r'^[+-]?[[:digit:]]+$') and exists ( select xyz from `myproject.mydataset.mytable`  s2 where s1.d=s2.d)

Этот запрос прекрасно выполняется в графическом интерфейсе пользователя GBQ

Любая помощь будет полезна для выполнения этого кода в командной строке.

1 Ответ

0 голосов
/ 13 декабря 2018

Терминал может испортить некоторые символы при вставке длинного и сложного текста, я бы предложил сохранить ваш запрос в виде файла .sql, а затем просто выполнить:

bq query `cat /path-to-file/test.sql`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...