大查询更新或删除问题

时间:2015-07-27 11:33:39

标签: google-bigquery

我无法通过php进行大查询api的任何更新或删除操作。有任何技术可以完成这项任务。

4 个答案:

答案 0 :(得分:3)

2016-08:BigQuery支持UPDATE和DELETE:)

Does BigQuery support UPDATE, DELETE, and INSERT (SQL DML) statements?

您可以使用BigQuery实现UPDATE和DELETE - 它不是本机操作。

要从表中删除行,请重新实现,而不使用不需要的行:

SELECT *
FROM [my.table1]
WHERE NOT id IN (19239,192392139,129391)

(设置为选项"允许大结果"以及"将结果写入my.table1")

要更新行,您可以执行类似的操作:

SELECT * FROM (
  SELECT * FROM [my.table1]
  WHERE NOT id IN (SELECT id FROM [my.updated_rows]
), (
  SELECT * FROM [my.updated_rows]
)

换句话说:BigQuery是一个分析数据库,其中DELETE和UPDATE不是优化操作 - 但是您可以使用覆盖原始表的单个SELECT语句将它们拉出来。

答案 1 :(得分:2)

不要忘记BigQuery是WORM技术(仅限设计附加)。它找我,你不知道这件事,因为没有像UPDATEDELETE这样的选项。

答案 2 :(得分:1)

正如其他朋友解释的那样,BigQuery只有附加设计。

您应该编写一个sql查询来过滤表中所有不需要的行,而不是删除行;并且您应该根据此查询的结果创建一个全新的表。然后你可以删除旧表。

要进行更新,您应该将新更新的行附加到表中,并按照我上面写的说明删除旧行。

答案 3 :(得分:0)

我已经停止设置写处置,然后可以使用python调用在bigquery上运行dml语句

不要设置以下参数

query_job_config.write_disposition