• ベストアンサー

truncate文で全テーブルを一気に削除できるか?

さきほどと似たような質問ですみません。 SQLコマンドであるデータベースの全テーブルを削除したいんですが、 truncate一文ですませる方法はないでしょうか。 それとも、一行ずつ truncate tableA truncate tableB .... とやっていくしかないのでしょうか?

  • Oracle
  • 回答数3
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

declare CURSOR CUR1 IS SELECT * FROM USER_TABLES; begin FOR CUR_RECORD IN CUR1 LOOP EXECUTE IMMEDIATE 'TRUNCATE TABLE "'||CUR_RECORD.TABLE_NAME||'"'; END LOOP; end; exit / というPL/SQLスクリプトを投入すれば、自己所有のテーブルは空に出来ます。 有無を言わさずに空になるので、気を付けてくださいね。

msndance
質問者

お礼

ありがとうございます! これはとても助かります 一行ずつやらねばならないものと思い込み、無駄な質問を追加してしまったので、1日たったら削除するようにします。 すいませんでした。

その他の回答 (2)

回答No.2

Oracleであれば、私は以下のようにしてます。 例えばtrn.sqlっていうtruncate文の集まったファイルを作成して実行してます。 余計なものが出力されないようにsetを使ってますが、 足りないかもしれませんので詳細はマニュアルを参考にして下さい。 spool trn.sql set lines 1000 set pages 0 set trimspool on set feedback off select 'truncate table ' || table_name || ';' from user_tables; spool off @trn

  • neko1963
  • ベストアンサー率49% (127/258)
回答No.1

テーブルごとに truncate するしかないです。 SQLをテキストファイルに書き込んでしまったらどうですか? どんなRDBMS環境かわからないので回答しにくいのですが spool table.log select table_name from user_tables; spool off としておいて、table.log 中の テーブル名を利用するとか・・・。

関連するQ&A

  • 特定のテーブルを除いたバックアップ

    データベース名をsampleとしますとバックアップのコマンドは mysqldump --password='xxxxx' sample > backup.sql となるのですが、このデーターベースの特定のテーブルを除いたものをバックアップしたいのですが どうすればいいのでしょうか? 以下のようにテーブルを個別に指定してひとつひとつコマンドを発行するしかないのでしょうか? mysqldump --password='xxxxx' sample tableA > tableA.sql mysqldump --password='xxxxx' sample tableB > tableB.sql mysqldump --password='xxxxx' sample tableC > tableC.sql よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLiteのUPDATE文を教えてください。

    UPDATE tableA, tableB SET tableA.name = tableB.name WHERE tableA.id = tableB.id; 上記のSQLが他のデータベースでは動きますが、SQLiteでは動きません。 同意味のSQLはどう書くのでしょうか。お願いします。

  • バッチファイルでTRUNCATE TABLE

    バッチファイルでTRUNCATE TABLEするにはどうしたら良いのでしょうか? バッチファイルからSQL文を発行するやり方がわかりません。

  • DBの全ユーザーテーブルに対するtruncate

    PostgreSQLを勉強中の者です。 データベースの全ユーザーテーブルに対して、個別にtruncateをかけるいい方法を探しています。  \pset pager  \dt 以上のコマンドを実行して、テーブル一覧を表示できることをはわかったのですが、ここから先の妥当なやり方がわかりません。 リダイレクトして、テキストエディタで加工して、シェルのようなもので流し込む・・・のような形になるのでしょうか? 実例も含めて教えていただけると助かります。 また、truncateされたことの上手い確認方法もあれば御教示下さい。 よろしくお願いします。

  • 異なるテーブル間の和

    テーブルAの属性item1とテーブルBのitem1の和を求めるにはSQLでどのように記述すれば良いのでしょうか?? tableA ------ id item1 item2 pointer tableB ------ id item1 item2 pointer という2つのテーブルで,tableBのpointerはtableAのidを指しています.

  • 1つのテーブルから複数のテーブルへのデータ振分け

    MySQLを使用して、tableAというテーブルのデータを tableB,tableC,tableDというテーブルに振り分けたいと思っています。 1日1回、自動的に行いたいと思っています。 たとえば、tableAのテーブル構成が下記のようなもので ================== name sex birth address phone email company ================== name,address,phoneはtableBに name,sex,birthはtableCに name,companyはtableDに分けるというような イメージです。 私の考えでは、下記のようなSQL文をPHPから呼び出して、タスクで 実行させてそれぞれ別のテーブルに振り分けようと思っている のですが、、もっと良いツールや方法があればお教えいただけ ませんでしょうか。 宜しくお願いいたします。 ---------------------------------------------------------------------------------------------------- INSERT INTO tableB (name,address,phone) SELECT tableA.name,tableA.address,tableA.phone FROM tableA AND INSERT INTO tableC (name,sex,birth) SELECT tableA.name,tableA.sex,tableA.birth FROM tableA AND INSERT INTO tableD (name,company) SELECT tableA.name,tableA.company FROM tableA; ----------------------------------------------------------------------------------------------------

  • 3つのテーブルを結ぶSQLの書き方

    お世話になります。 3つのテーブルを結びつけるSQLの書き方がわかりません。ご指導お願いします。 [TableA][ID] [TableB][ID] [TableC][ID] [TableA]と[TableB]をLEFT JOINでつなぐ。 上の結果を[TableA][ID]と[TableC][ID]でInner joinでつなぐ。 つまり・・・ SELECT TableA.ID,TableB.ID FROM TabelA LEFT JOIN TableB→この結果 SELECT TableA.ID,TableB.ID TableC.ID From この結果 INNER JOIN TableC ON TableA.ID = TableC.ID こんな感じのことをやりたいのですが、記述の方法がわかりません。 どなたかお知恵をお貸しください。

  • SQL2000でのTRUNCATE TABLE

    お世話になります、AccessからSQL2000に接続し、 TRUNCATE TABLEを使いテーブルのデータをクリアしたいのですが、どのようにしたらよろしいのでしょうか。御存知の方がいらっしゃいましたら御教授ください。よろしくお願いします。

  • 2つのテーブルをLIKE演算子のように結合させたい

    こんにちは DB2 ver 8.1 fixPak5 VB6 にて開発を行っております。 TABLEa の NAMAEa KANKEIa TABLEb の ADANAb FLAG というテーブルがあるとします そしてそれぞれのテーブルに TABLEa のNAMAEa に '山田' TABLEb のADANAb に '山' というデータがはいっていたとき この2つのデータをLIKE演算子のように結合させたいのですが、どのようにしたらいいのでしょうか。 イメージとしては SELECT NAMAEa, KANKEIa, FLAG FROM TABLEa LEFT OUTER JOIN TABLEb ON NAMAEa LIKE ADANAb% 伝わるでしょうか・・・ できたら1つのSQL文で完結させたいです。 駄目だったらRecordSetにもたせて処理しようかと思いますが、 今後の為にも何か方法があるのでしたら教えてください。

  • truncate文を発行したときに

    データベースのすべての表をけしたくてSQLPLUSでTRUNCATEしようとするんですが、 表には使用可能な外部キーによって参照される一意キー/主キーが含まれています。 というエラーメッセージがでることがあります。 DBA STUDIOですとテーブル名を選択してDELキーですんなり消せるのですが・・・。 キーの参照設定とかを消したりすればよいのでしょうか? 具体的には、TRUNCATEを行う前にどのようなSQLPLUSコマンドを打てばいいのでしょうか。