如何在Big查询表中更新数据类型?

时间:2017-10-02 14:15:55

标签: google-bigquery

我刚刚在Big Query中启动了POC。我想知道如何在现有表中更新/修改列定义/模式。

bq mk -t market.cust custid:integer,grp:integer,odate:string bq update -t​​ market.cust custid:string,grp:integer,odate:string

**Error:
spanda2040@instance-3:~/data$ bq update -t market.cust custid:string,grp:integer,odate:string
BigQuery error in update operation: Provided Schema does not match Table arboreal-height-175822:market.cust. Field custid has changed type from INTEGER to STRING**

表架构:

上次修改的架构总行数总字节数到期时间分区标签

02 Oct 13:38:29 | - custid:整数0 0                     | - grp:整数                     | - odate:string

2 个答案:

答案 0 :(得分:0)

运行一个查询,用现有表替换现有表,并根据需要转换数据:

#standardSQL
SELECT a, b, c, CAST(d as INT64) AS d
FROM `p.t.d`

根据评论更新 - 如果我想将整数更改为字符串:

#standardSQL
SELECT a, b, c, CAST(d as STRING) AS d
FROM `p.t.d`

答案 1 :(得分:0)

使用SELECT会产生一些问题,因为您需要扫描整个表格

以下是超级简单的方法,花费$ 0.00

  1. 将现有表格导出为GCS
  2. 从GCS加载到具有与原始表相同的模式的新表,但该列除了固定类型
  3. 你做完了。 0美元的费用!!
  4. 我这样做是为了进行理智检查,它可以作为魅力

    当你对这种方法感到满意时 - 你甚至可以加载到同一个表中 - 使用WRITE_TRUNCATE for writeDisposition属性