Google BigQuery:如何使用 gsutil 删除或覆盖表?
Posted
技术标签:
【中文标题】Google BigQuery:如何使用 gsutil 删除或覆盖表?【英文标题】:Google BigQuery: How to use gsutil to either remove or overwrite a table? 【发布时间】:2017-12-28 13:08:19 【问题描述】:我有一个程序可以从网上下载一些数据并将其保存为csv
,然后将该数据上传到Google Cloud Storage Bucket
。接下来,该程序将使用gsutil
通过连接Google Cloud Storage Bucket
中的所有文件来创建一个新的Google BigQuery Table
。要进行连接,我在command prompt
中运行此命令:
bq load --project_id=ib-17 da.hi gs://ib/hi/* da:TIMESTAMP,bol:STRING,bp:FLOAT,bg:FLOAT,bi:FLOAT,lo:FLOAT,en:FLOAT,kh:FLOAT,ow:FLOAT,ls:FLOAT
问题是由于某种原因这个命令附加到现有表中,所以我得到了很多重复的数据。问题是我怎样才能使用gsutil
先删除表,或者我怎样才能使用gsutil
覆盖表?
【问题讨论】:
【参考方案1】:如果我正确理解了您的问题,您应该删除并重新创建表:
bq rm -f -t da.hi
bq mk --schema da:TIMESTAMP,bol:STRING,bp:FLOAT,bg:FLOAT,bi:FLOAT,lo:FLOAT,en:FLOAT,kh:FLOAT,ow:FLOAT,ls:FLOAT -t da.hi
【讨论】:
这就是我要找的。改善这一点的唯一方法是添加 project_id,因此命令如下所示:bq rm -f -t --project_id=ib-17 da.hi
【参考方案2】:
另一种可能是使用--replace
标志,例如:
bq load --replace --project_id=ib-17 da.hi gs://ib/hi/*
我认为这个标志曾经被称为 WRITE_DISPOSITION,但看起来 CLI 将名称更新为 --replace
。
【讨论】:
以上是关于Google BigQuery:如何使用 gsutil 删除或覆盖表?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AppScript 在 BigQuery 中将 Google 工作表持久化为表格
在 google bigquery 中,如何使用 google python 客户端使用 javascript UDF
如何使用 Bigquery 在 Google Bigquery 中进行身份验证,而无需使用服务帐户进行用户输入
如何使用 Google Natural Language API 丰富 Bigquery 表中的数据?