Google BigQuery - 如何使用bq命令删除表?

时间:2015-05-04 08:46:42

标签: google-bigquery

Google BigQuery - bq命令可让您创建,加载,查询和更改表格。

我没有找到任何关于丢桌的文件,很高兴知道如何做。

我发现bq工具更容易实现,而不是为每个命令编写python接口。

感谢。

5 个答案:

答案 0 :(得分:22)

发现它:

bq rm -f -t data_set.table_name
表的

-t,强制的-f-r删除指定数据集中的所有表

很棒的工具。

答案 1 :(得分:10)

  

有没有办法批量删除多个表? - activelearner

在bash中,您可以执行以下操作:

for i in $(bq ls -n 9999 my_dataset | grep keyword | awk '{print $1}'); do bq rm -ft my_dataset.$i; done;

说明:

  • bq ls -n 9999 my_dataset - 在我的数据集中列出最多9999个表
  • | grep keyword - 将上一个命令的结果输入grep,搜索表格共有的关键字
  • | awk '{print $1}' - 将上一个命令的结果输入awk并仅打印第一列
  • 将所有内容包装成for循环
  • do bq rm -ft my_dataset.$i; done; - 从数据集中删除每个表格

我强烈建议您在添加'do bq rm'之前运行命令列出要删除的表。这样,您可以确保只删除实际要删除的表。

答案 2 :(得分:1)

您可以出于相同目的使用Python代码(在Jupyter Notebook上):

bigquery_client  = bigquery.Client() #Create a BigQuery service object
dataset_id='Name of your dataset'
table_id='Table to be deleted'
table_ref = bigquery_client.dataset(dataset_id).table(table_id)
bigquery_client.delete_table(table_ref)  # API request
print('Table {}:{} deleted.'.format(dataset_id, table_id))

如果要删除完整的数据集:

如果数据集也包含表。而且我们要一口气删除包含表的数据集,命令是:

!bq rm -f -r serene-boulder-203404:Temp1   # It will remove complete data set along with the tables in it

如果数据集为空,则也可以使用以下命令: 要使用以下命令,请确保已删除该数据集中的所有表,否则将产生错误(数据集仍在使用中)。

#Now remove an empty dataset using bq command from Python
!bq rm -f dataset_id
print("dataset deleted successfully !!!")

答案 3 :(得分:0)

我使用命令行for loop删除了一个月的表数据,但这依赖于您的表命名:

for %d in (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) DO bq rm -f -t dataset.tablename_201701%d

答案 4 :(得分:0)

扩展@james 的出色回答,我只需要删除数据集中的所有表,但实际上并未删除数据集本身。因此 grep 部分对我来说是不必要的,但我仍然需要摆脱

table_id
------------------

列出表时 bq 返回的标头,为此我使用 sed 删除了前两行:

for i in $(bq ls -n 9999 my_dataset | sed "1,2 d" | awk '{print $1}'); do bq rm -f my_dataset.$i; done;

也许有一个 bq 选项可以不返回该标头,但如果有,我也不知道。