将bigquery查询或ddl语句同时添加到create_if_needed和write_append

出于编程原因,我想两次发布相同的DDL语句:

    INSERT INTO dataset.tabledest(id,vi)
    SELECT 'test' AS id,'value' AS vi
    FROM dataset.tablesource
  • 第一次调用它,如果它不存在,我希望它创建表并附加查询结果
  • 第二次调用它,我希望它附加结果

使用BigQuery API,可以通过以下方式完成:

  • 仅将select语句用作查询
  • 将目标表设置为参数(例如,使用R bigrquery API ,destination_table='...',
  • 设置write_disposition='WRITE_APPEND'
  • 设置create_disposition='CREATE_IF_NEEDED'

我不确定这是否可以通过单个查询完成,而不需要将其他外部参数传递给API。

shiyan5168 回答:将bigquery查询或ddl语句同时添加到create_if_needed和write_append

没有办法使用查询,而可以通过检查information_schema中表的存在来使用脚本来完成。

IF NOT EXISTS (SELECT 1 FROM dataset.INFORMATION_SCHEMA.TABLES WHERE table_name = 'tabledest') THEN
  CREATE TABLE dataset.tabledest (...);
END IF;

INSERT dataset.tabledest SELECT ...

(由另一个答案提醒)或者,您可以执行以下操作:

CREATE TABLE IF NOT EXISTS dataset.tabledest (...);
INSERT dataset.tabledest SELECT ...
,

就像@ yun-zhang提到的那样,不可能在单个语句中做到这一点。

或者,您也可以使用CREATE TABLE IF NOT EXISTS ...来检查INFORMATION_SCHEMA中是否存在表。

本文链接:https://www.f2er.com/3158904.html

大家都在问