web-dev-qa-db-ja.com

データベースを削除せずに、phpMyAdminでデータベース内のすべてのテーブルの内容を削除するにはどうすればよいですか?

データベース内のテーブルを削除せずに、phpMyAdminでデータベース内のすべてのテーブルの内容を空にするにはどうすればよいですか?

開発中は1時間に数回これを行うので、60以上のテーブルすべてで毎回個別に[空]をクリックしたくはありません。

13
Joshua

複数のDELETEステートメント(テーブルごとに1つ)を使用してSQLスクリプトを作成し、実行します。

PhpMyAdminにアクセスして、必要なデータベースを選択します。 [SQL]タブを選択し、SQLスクリプトをウィンドウに貼り付けます。 Goを押します。

ここも見てください:

削除せずにMySQLデータベースからすべてのテーブルを削除します

7

私見の最も簡単な解決策は次のとおりです。

  • Phpmyadminで、データベースリスト(左側)で切り捨てるデータベースを選択します
  • メインビューを下にスクロールすると、[すべてチェック]チェックボックスが表示され、その横に[空]を選択できるドロップダウンボックスが表示されます。完了。
25
andreas

実際には、phpMyAdminによってすべてのテーブルデータを切り捨てることができます。

PhpMyAdminでは、次の手順で実行できます。

1)u DBを選択し、次のようにエクスポート操作を実行します。

カスタムエクスポート方法を選択します

  • フォーマット固有のオプションで「ダンプテーブル->データ」を選択します
  • オブジェクト作成オプションで「DROPTABLE ...ステートメントの追加」を選択します。

このステップにより、phpMyAdminは、すべてのテーブルの完全なリストの1つのSQLスクリプトを作成するのに役立ちます

3)インポート操作を実行して、このスクリプトで各空白テーブルを1つずつ削除および作成します

enter image description here

4
John Yin

このクエリから始めることができます

SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'

そして、これらの結果を繰り返し処理して、「DELETEFROM」+ T.Table_Nameの調整に合わせて動的SQL文字列を作成します。

3
LesterDove

残念ながら、TRUNCATE DATABASEまたは同等のものはありません。そうは言っても、データベース内のすべてのテーブルを調べてそれらを切り捨てる、ある種のストアドプロシージャを使用できる可能性があります。 ここでそのようなものを見つけました 、しかしそれが機能するかどうかはわかりません。 (おそらくコメントの議論も読むべきです)

2

TRUNCATE TABLEステートメントはテーブルを完全に空にします(MySql 3.23以降)。

特定のデータベースで再利用できるスクリプトを作成できます。これは一般的ではありませんが、新しいデータベースを作成する必要がなく、新しいデータベースで開始するたびにログインする必要がありません。

スクリプトを自分で作成する方法は次のとおりです。WebブラウザでphpMyAdminに移動し、データベースを選択します。 [SQL]タブをクリックして、'SHOW TABLES'を実行します。印刷用フォーマットを選択し、内容をテキストエディタにコピーします。

次に、テーブル名ごとに、次の形式で書き直します。

TRUNCATE TABLE <tablename>;

注:テーブルが多数ある場合は、正規表現を使用できます

2
mathijsuitmegen

Phpmyadmin関数からすべてのデータを簡単に削除できます。この質問が投稿された2010年にはこの機能が存在しなかったのかもしれませんが、初心者なら誰でも参照できると思います。

データベースからすべてのデータを削除します

2
Byte2c
drop procedure if exists truncate_tables;

delimiter #
create procedure truncate_tables()
begin
 declare tab_name varchar(64);
 declare done tinyint unsigned default 0;

 declare table_cur cursor for select t.table_name
 from 
  information_schema.schemata s
  inner join information_schema.tables t on s.schema_name = t.table_schema
 where
   s.schema_name = database() and t.table_type = 'BASE TABLE';

 declare continue handler for not found set done = 1;

 open table_cur;
 repeat
   fetch table_cur into tab_name;
   set @cmd = concat('truncate table ', tab_name);

   prepare stmt from @cmd;
   execute stmt;
 until done end repeat;

 close table_cur;
end #
1
Jon Black

次のようにのみテーブル構造をエクスポートできます。

mysqldump -u root -p --no-data mydb > backup_info.sql

次に、データベース全体を削除して再作成し、バックアップから復元します。

すべてをスクリプト化するのに十分簡単です。

1
josh kobrin

実際、もっと深く行き、これを書いた:

SET @command:='';
SELECT @command:=CONCAT(@command, 'TRUNCATE TABLE ',T.TABLE_NAME,';')
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE' AND T.table_schema='YOUR_TABLE_SCHEMA';
PREPARE bye_world FROM @command;
EXECUTE bye_world;
DEALLOCATE PREPARE bye_world;

提供されたスキーマYOUR_TABLE_SCHEMAからすべてのテーブル名を選択し、それらを@commandユーザー変数に入れて、次のようにそれぞれのクエリを形成します。TRUNCATE TABLE TABLE_NAME;

次に、選択したステートメントを準備して実行します。クエリの前にユーザー変数を宣言する必要があることに注意してください。そうしないと、0になり、ステートメントが台無しになります。

チュートリアル

MySQL DROPTABLEを使用して既存のテーブルを削除する

0
UnstableFractal