【问题标题】:updating bigquery from command line using standard SQL raises Too Many Positional Args使用标准 SQL 从命令行更新 bigquery 会引发太多位置参数
【发布时间】:2018-10-06 23:25:22
【问题描述】:

我想做非常简单的 DML 来使用标准 SQL 更新 BigQuery 中的表,但似乎除了我正在更新的表之外,我无法关联更新中的任何其他表。

update dataset.interaction set field = true 
where anotherField in (select field from dataset.anotherTable)

或者

update dataset.interaction i 
inner join dataset.anotherTable o on o.joinField = i.joinField
set field = true;

两个查询都会引发

Too many positional args, still have ['field','=','true'...]

【问题讨论】:

  • 那么您使用的实际bq 命令是什么?
  • 知道了。我在 bq shell 中直接使用更新。我虽然可以将选择直接写入 bq shell,但我可以对 DML 执行相同的操作。谢谢
  • 请提供正确答案,而不是编辑问题:)

标签: google-bigquery


【解决方案1】:

解决了。

由于您可以在 bq shell 中直接使用SELECT(没有query),我认为在使用UPDATEDELETE 时我也可以这样做。但事实是,要运行DMLs,您需要使用query,并且在shell 中使用bq query 命令要容易得多。

据我了解,您不能将updateinner join 选项一起使用,只能使用in 子句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    • 2012-08-05
    • 2010-09-13
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多