データベース内のテーブルを削除せずに、phpMyAdminのデータベース内のすべてのテーブルの内容を空にするにはどうすればよいですか?
開発中は1時間に数回これを行うので、60以上のテーブルすべてで毎回個別に[空]をクリックするのは避けたいと思います。
データベース内のテーブルを削除せずに、phpMyAdminのデータベース内のすべてのテーブルの内容を空にするにはどうすればよいですか?
開発中は1時間に数回これを行うので、60以上のテーブルすべてで毎回個別に[空]をクリックするのは避けたいと思います。
IMHOの最も簡単な解決策は次のとおりです。
複数のDELETEステートメント(テーブルごとに1つ)を使用してSQLスクリプトを作成し、実行します。
phpMyAdminに入り、必要なデータベースを選択します。[SQL]タブを選択し、SQLスクリプトをウィンドウに貼り付けます。Goを押します。
ここも見てください:
実際には、phpMyAdminによってすべてのテーブルデータを切り捨てることができます。
phpMyAdminでは、次の手順で実行できます。
1)u DBを選択し、次のようにエクスポート操作を実行します。
カスタムエクスポート方法を選択します
このステップにより、phpMyAdminは、すべてのテーブルの完全なリストの1つのSQLスクリプトを作成するのに役立ちます
3)インポート操作を実行して、このスクリプトで各空白のテーブルを1つずつ削除および作成します
このクエリから始めることができます
SELECT T.*
FROM INFORMATION_SCHEMA.tables T
WHERE T.table_type = 'BASE TABLE'
そして、これらの結果を繰り返し処理して、「DELETEFROM」+T.Table_Nameの調整に合わせて動的SQL文字列を作成します。
TRUNCATE TABLE
ステートメントはテーブルを完全に空にします(MySql 3.23以降)。
特定のデータベースで再利用できるスクリプトを作成できます。これは一般的ではありませんが、新しいデータベースを作成する必要がなく、新しいデータベースで開始するたびにログインする必要がありません。
自分でスクリプトを作成する方法は次のとおりです。WebブラウザでphpMyAdminに移動し、データベースを選択します。[SQL]タブをクリックして、を実行し'SHOW TABLES'
ます。印刷に適した形式を選択し、内容をテキストエディタにコピーします。
次に、テーブル名ごとに、次の形式で書き直します。
TRUNCATE TABLE <tablename>;
注:テーブルが多い場合は、正規表現を使用できます
残念ながら、TRUNCATE DATABASE
同等のものはありません。そうは言っても、データベース内のすべてのテーブルを調べてそれらを切り捨てる、ある種のストアドプロシージャを使用できる可能性があります。ここでそのようなものを見つけましたが、それが機能するかどうかはわかりません。(おそらくコメントディスカッションも読む必要があります)
phpmyadmin関数からすべてのデータを簡単に削除できます。この質問が投稿された2010年にはこの機能が存在しなかったのかもしれませんが、初心者なら誰でも参照できると思います。
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 #
次のようにのみテーブル構造をエクスポートできます。
mysqldump -u root -p --no-data mydb > backup_info.sql
次に、データベース全体を削除して再作成し、バックアップから復元します。
全体をスクリプト化するのに十分簡単です。
実際、もっと深く行き、これを書きました:
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
と、ステートメントが台無しになります。
MySQLDROPTABLEを使用して既存のテーブルを削除する