最近、私はdb2と協力し始め、いくつかのデータベースを作成しました。
単一のDBを削除するには、db2 drop db demoDB
を使用する必要があります。一度にすべてのDBを削除する方法はありますか?db2一度だけデータベースを落とす
おかげ
最近、私はdb2と協力し始め、いくつかのデータベースを作成しました。
単一のDBを削除するには、db2 drop db demoDB
を使用する必要があります。一度にすべてのDBを削除する方法はありますか?db2一度だけデータベースを落とす
おかげ
最初、私はそれを行うための任意のDB2自然の方法があるとは思いません。しかし、私は通常次のことをします。
があなたの必要性に依存
方法は、シェルスクリプトを使用しているより多くのDBには、あなたが得ることができる一覧表示されますがあり確信している: 1.新規に作成します。スクリプト'vi db2_drop_all.sh'などを使用してください。 2.コードを貼り付けます:ステップ2でリストを変更することができます(あなたはもちろんのインスタンスに切り替えた後)sh db2_drop_all.sh
変更
4.保存
#!/bin/bash -x
for db_name in $(db2 list db directory | grep Database | \
grep name | cut -d= -f2); do
db2 drop db $db_name || true
done
exit 0
3を、ちょうどスクリプトを実行お知らせあなたが望むようにDBの。 (たとえば、db2 list active databases
に)
あなたのお役に立てば幸いです。 :)
'list db directory'はローカルデータベースとリモートデータベースをリストするので、あなたのシステムにカタログされたリモートデータベースがあれば、このスクリプトはエラーを生成するかもしれません。理想的には、あなたのスクリプトは 'Directory entry type = Indirect'を持つデータベースだけを見つけるでしょう。 –
また、' list active databases'は、データベースが非アクティブである場合、データベースを必ずしも表示するとは限りません。 – mustaccio
大丈夫です。 :)私はちょうど彼にシンプルなbashスクリプトでそれを行う方法の手がかりを与えました。このスクリプトは私が数時間前に助けてくれました。 – nisanarz
これまでの回答を考慮に入れると、この一連の行はスクリプトを作成しなくても同じです。
db2 list db directory | tail -n +6 | sed 'N;N;N;N;N;N;N;N;N;N;N;s/\n/ /g' | awk '$28 = /Indirect/ {print "db2 drop database "$7}' | source /dev/stdin
これは、ローカルデータベースをフィルタリングし、生成された出力を実行します。
(英語のみの環境で動作します)
素晴らしい提案。 :) – nisanarz
ありません - あまりにも多くの仕事のように見えるのでしょうか? :-) – MichaelTiefenbacher