使用标准 SQL 从命令行更新 bigquery 会引发太多位置参数
Posted
技术标签:
【中文标题】使用标准 SQL 从命令行更新 bigquery 会引发太多位置参数【英文标题】:updating bigquery from command line using standard SQL raises Too Many Positional Args 【发布时间】: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 执行相同的操作。谢谢
请提供正确答案,而不是编辑问题:)
【参考方案1】:
解决了。
由于您可以在 bq shell 中直接使用SELECT
(没有query
),我认为在使用UPDATE
或DELETE
时我也可以这样做。但事实是,要运行DMLs
,您需要使用query
,并且在shell 中使用bq query
命令要容易得多。
据我了解,您不能将update
与inner join
选项一起使用,只能使用in
子句。
【讨论】:
以上是关于使用标准 SQL 从命令行更新 bigquery 会引发太多位置参数的主要内容,如果未能解决你的问题,请参考以下文章
在 CLI 上使用 bq 从 BigQuery 标准 SQL 连接表中打印出漂亮的值表?