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 表中的数据?

如何使用 google-api-python-client 设置 BigQuery 配置属性?

如何使用API 而不是使用Google BigQuery数据传输服务?