谷歌大查询命令行执行复杂查询给出错误意外'('
Posted
技术标签:
【中文标题】谷歌大查询命令行执行复杂查询给出错误意外\'(\'【英文标题】:google big query command line executing complex query giving error unexpected '('谷歌大查询命令行执行复杂查询给出错误意外'(' 【发布时间】:2018-12-13 13:14:36 【问题描述】:我有以下要在谷歌大查询控制台上执行的命令行查询。 它包含很多 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)
我想在命令行中运行这个查询。
查询
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)
此查询在 GUI GBQ 中执行良好
如果能在命令行中执行此代码,我们将不胜感激。
【问题讨论】:
【参考方案1】:在粘贴长而复杂的文本时,终端可能会弄乱一些字符,我建议将您的查询保存为 .sql 文件,然后运行:
bq query `cat /path-to-file/test.sql`
【讨论】:
感谢您的工作。实际上我想使用 os.system() 在 python 中运行这个命令你能建议怎么做吗?最终主要查询是 ('bq mk --use_legacy_sql=false --description "This is copy view" --viewcat q_cmd.txt
--project_id '+dest_project+" "+dest_dataset+"."+dest_view) 我想运行在python中你能建议我怎么做吗?
您尝试使用 python 运行 CLI 命令是否有特定原因?如果没有,您可以查看 google-cloud for python (gcloud-python.readthedocs.io/en/latest/bigquery/query.html)。这将使您可以非常轻松地使用 python 与 BigQuery 进行交互。认为您将需要使用 DDL 而不是“bq mk --view”。即创建或替换视图 temp.myview AS (SELECT '1' as col)以上是关于谷歌大查询命令行执行复杂查询给出错误意外'('的主要内容,如果未能解决你的问题,请参考以下文章