web-dev-qa-db-ja.com

Google BigQuery-bqコマンドでテーブルを削除する方法は?

Google BigQuery-bqコマンドを使用すると、テーブルを作成、読み込み、クエリ、変更できます。

テーブルの削除に関するドキュメントは見つかりませんでした。方法を教えていただければ幸いです。

コマンドごとにpythonインターフェイスを記述する代わりに、bqツールの実装がはるかに簡単であることがわかりました。

ありがとう。

13
Alon Eldi

それを見つけた :

bq rm -f -t data_set.table_name

-tテーブルの場合、-fフォース、-r指定されたデータセット内のすべてのテーブルを削除します

素晴らしいツール。

27
Alon Eldi

複数のテーブルを一括削除する方法はありますか? – 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'を追加する前に、コマンドを実行して削除するテーブルを一覧表示することを強くお勧めします。このようにして、実際に削除したいテーブルのみを削除していることを確認できます。

[〜#〜] update [〜#〜]:引数-ftはエラーを返すようになり、単に-fプロンプトなしで強制的に削除するには:

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

同じ目的で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 !!!")
2
Yogesh

コマンドライン_for loop_を使用して1か月のテーブルデータを削除しましたが、これはテーブルの名前に依存しています。

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

0
ComputerGeake