Google BigQuery - bq命令可让您创建,加载,查询和更改表格。
我没有找到任何关于丢桌的文件,很高兴知道如何做。
我发现bq工具更容易实现,而不是为每个命令编写python接口。
感谢。
答案 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并仅打印第一列do bq rm -ft my_dataset.$i; done;
- 从数据集中删除每个表格我强烈建议您在添加'do bq rm'之前运行命令列出要删除的表。这样,您可以确保只删除实际要删除的表。
答案 2 :(得分:1)
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
选项可以不返回该标头,但如果有,我也不知道。