我有几个要删除的日期分片表,但每个表已经有100多个分片,因此不能手动删除它们。
我尝试使用通配符
DROP TABLE my_dataset.my_table_*;
但它似乎不起作用。
我终于使用了python API:
for table_id in tables:
table_ref = client.dataset(dataset_id).table(table_id)
client.delete_table(table_ref)
它可以工作,但是我需要使用要删除的表的名称来创建表数组。
是否有一种方法可以从UI中从BigQuery中删除日期分片表中的所有日期分片?
还是在用户界面中使用SQL命令?
还是在命令行中使用通配符?
谢谢
答案 0 :(得分:3)
而不是使用您创建的表数组(带有表名)呢?
from google.cloud import bigquery
client = bigquery.Client()
dataset_ref = client.dataset('my_dataset')
tables = list(client.list_tables(dataset_ref)) # API request(s), now you have the list of tables in this dataset
queried_tables=[]
for table in tables:
print(table.table_id)
if table.table_id.startswith("your_favourite_prefix"): #will perform the action only if the table has the desired prefix
queried_tables.append(table.table_id)
print(queried_tables) #the list of the desired tables names, now you can use your script to delete them all
答案 1 :(得分:1)
没有内置方法可删除所有共享公用前缀的表。使用Python库将其全部删除的方法是合理的选择,或者您可以在命令行中通过调用bq rm dataset.table_name
的循环来执行相同的操作。