【问题标题】:BigQuery SQL, append SQL query result to existing tableBigQuery SQL,将 SQL 查询结果附加到现有表
【发布时间】:2019-01-21 01:32:43
【问题描述】:

我正在使用 Google Cloud Platform BigQuery SQL。

我有一个表 [myTable],我正在编写以下 SQL。我想将此 SQL 的结果附加到 myTable,但到目前为止我所做的只是在每次运行 SQL 时替换 myTable。

谁能告诉我将查询结果附加到现有表的 SQL 语句是什么?

CREATE OR REPLACE myTable  -- myTable will be replace every time...
SELECT
  id,
  parameter1,
  parameter2
FROM 
  third_party_managerd_table

【问题讨论】:

  • 您可以在 bigquery 中使用追加/覆盖设置。

标签: sql database google-bigquery


【解决方案1】:

以下是 BigQuery 标准 SQL

#standardSQL
INSERT `project.dataset.yourtable` (id, parameter1, parameter2) 
SELECT
  id,
  parameter1,
  parameter2
FROM 
  `project.dataset.third_party_managerd_table`   

在此处查看有关 BigQuery DML 的更多信息 - https://cloud.google.com/bigquery/docs/reference/standard-sql/dml-syntax

【讨论】:

    【解决方案2】:

    如果您使用bq 命令行工具运行查询,则可以将其与--noreplace 参数一起使用,以确保将数据附加到预先存在的表中。方法如下:

    bq --location=US query --noreplace --destination_table='project.dataset.yourtable' 'SELECT id, parameter1, parameter2 from `project.dataset.third_party_managerd_table`'  
    

    希望这会有所帮助。

    【讨论】:

    • 使用INSERT 不涉及任何流媒体 - 因此不会产生任何流媒体费用!请仔细检查并分别更正您的答案。 dml收费详情可以查看cloud.google.com/bigquery/pricing#dml
    • 使用 DML INSERT 将记录添加到表中会产生成本。我已编辑答案以删除“流媒体”一词。
    • 没有插入成本之类的东西 - 您只需为查询处理的字节数付费!
    • 我的意思是 DML 成本。每个 DML 语句都有相关的成本:cloud.google.com/bigquery/pricing#dml
    • 在 INSERT 的情况下与该 INSERT 查询中涉及的 SELECT 查询的成本完全相同 - 所以你仍然应该更正你的答案
    【解决方案3】:

    也可以通过使用新查询创建一个新表并将其插入“myTable”来完成

    CREATE OR REPLACE new_info
    SELECT
      id,
      parameter1,
      parameter2
    FROM 
      third_party_managerd_table;
    
    INSERT INTO myTable
    SELECT 
      n.*
    FROM 
      new_info n;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 2016-10-07
      • 1970-01-01
      • 2018-07-13
      相关资源
      最近更新 更多