読者です 読者をやめる 読者になる 読者になる

Webサービスで起業を目指すプログラマーblog

仕事で使ったプログラミング、サーバー周りで役に立つこと、Webサービス開発に必要な技術情報、モバイル情報を書いてます。わかりやすく見やすくをモットーにしています。

Oracleでテーブルを一括で削除する方法

Oracle

データをインポートするときにテーブル内にデータがあるとややこしくなるので、事前にテーブルの削除またはデータの削除が必要になります。
1つずつ消してもいいのですが手間がかかるので他の方法を探していたら動的SQLなるものを見つけたのでそれを参考に一括削除SQLを作ってみました。


systemでログインしdba_usersのownerで絞ってもいいのですが、他のテーブルが消えたら恐ろしいので各ユーザー毎に削除する形を取りました。

削除するテーブルのあるユーザーでログインしてください。

set serveroutput on size 10000;
begin
	for cur in (select table_name from user_tables)
	loop
		dbms_output.put_line(cur.table_name);
		execute immediate 'drop table ' || cur.table_name || ' cascade constraints';
	end loop;
end;
/


#追記 2012/06/26
インポート時にシーケンスがあれば削除する必要があるので追記しておきます。
シーケンスを一括で削除するには次のコードを実行します。

set serveroutput on size 10000;
begin
	for cur in (select sequence_name from user_sequences)
	loop
		dbms_output.put_line(cur.sequence_name);
		execute immediate 'drop sequence ' || cur.sequence_name;
	end loop;
end;
/


一応、削除対象のテーブル名を表示するように書いています。
一括で削除されるので本番DBをつついてないかなど念入りにチェックしてから実行してください。


プロとしてのOracle PL/SQL入門 改訂版
プロとしてのOracle PL/SQL入門 改訂版アシスト教育部

ソフトバンククリエイティブ 2010-03-18
売り上げランキング : 31236

Amazonで詳しく見る


関連商品
プロとしてのOracleアーキテクチャ入門 Oracle現場主義
プロとしてのSQLチューニング入門
プロとしてのOracle入門 Oracle現場主義
プロとしてのOracle運用管理入門
プロとしてのデータモデリング入門 (Oracle現場主義)