【问题标题】:google big query command line executing complex query giving error unexpected '('谷歌大查询命令行执行复杂查询给出错误意外'('
【发布时间】:2023-03-25 04:05:01
【问题描述】:

我有以下要在谷歌大查询控制台上执行的命令行查询。 它包含很多 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 中执行良好

如果能在命令行中执行此代码,我们将不胜感激。

【问题讨论】:

    标签: bash google-bigquery syntax-error command-line-interface sh


    【解决方案1】:

    在粘贴长而复杂的文本时,终端可能会弄乱一些字符,我建议将您的查询保存为 .sql 文件,然后运行:

    bq query `cat /path-to-file/test.sql`
    

    【讨论】:

    • 感谢您的工作。实际上我想使用 os.system() 在 python 中运行这个命令你能建议怎么做吗?最终主要查询是 ('bq mk --use_legacy_sql=false --description "This is copy view" --view cat 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)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 2015-05-26
    • 2022-01-27
    相关资源
    最近更新 更多