Как я могу удалить содержимое всех таблиц в моей базе данных в phpMyAdmin, не удаляя базу данных? - PullRequest
12 голосов
/ 27 марта 2010

Как я могу очистить содержимое всех таблиц в моей базе данных в phpMyAdmin, не удаляя ни одну из таблиц в базе данных?

Поскольку я делаю это несколько раз в час во время разработки, я бы не стал индивидуально нажимать «Очистить» на всех 60+ столах каждый раз.

Ответы [ 10 ]

19 голосов
/ 22 сентября 2015

ИМХО самое простое решение:

  • В phpmyadmin выберите базу данных, которую вы хотите обрезать, в списке баз данных (слева)
  • На главном экране прокрутите вниз, вы увидите флажок «Отметить все», а рядом с ним раскрывающийся список, где вы можете выбрать «Пусто». Готово.
7 голосов
/ 27 марта 2010

Создайте сценарий SQL с несколькими операторами DELETE (по одному для каждой таблицы) и выполните его.

Зайдите в phpMyAdmin и выберите нужную базу данных. Выберите вкладку SQL и вставьте сценарий SQL в окно. Хит Го.

Смотрите здесь тоже:

Удалить все таблицы из базы данных MySQL без удаления

4 голосов
/ 19 февраля 2014

Мы можем усечь все данные таблиц по phpMyAdmin!

В phpMyAdmin вы можете сделать это следующим образом:

1) выберите u DB и выполните операцию экспорта следующим образом:

выберите пользовательский метод экспорта

  • выберите «Таблица дампа -> данные» в параметрах формата
  • выберите «Добавить оператор DROP TABLE ...» в параметрах создания объекта.

На этом этапе phpMyAdmin помогает нам создать один сценарий sql полного списка всех таблиц

3) выполнить операцию импорта, чтобы удалить и создать каждую пустую таблицу один за другим с помощью этого скрипта

enter image description here

3 голосов
/ 27 марта 2010

Вы можете начать с этого запроса

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

И повторять эти результаты, чтобы построить динамическую строку SQL под мелодию «DELETE FROM» + T.Table_Name

2 голосов
/ 07 марта 2011

Оператор TRUNCATE TABLE полностью очистит таблицу (MySql 3.23 и выше).

Вы можете создать сценарий, который вы сможете использовать повторно для конкретной базы данных.Он не является универсальным, но избавляет вас от создания новой базы данных + входа в систему каждый раз, когда вы хотите начать с новой базы данных.

Вот как вы можете создать скрипт самостоятельно: В веб-браузере перейдите к phpMyAdmin и выберите базу данных.Перейдите на вкладку SQL и выполните 'SHOW TABLES'.Выберите формат для печати и скопируйте содержимое в текстовый редактор.

Теперь для каждого имени таблицы вы переписываете его в формате:

TRUNCATE TABLE <tablename>;

примечание: вы можете использовать регулярное выражениеесли у вас много таблиц

2 голосов
/ 27 марта 2010

К сожалению, нет TRUNCATE DATABASE или его эквивалента. С учетом сказанного вы, вероятно, могли бы использовать какую-то хранимую процедуру, которая просматривает все таблицы в вашей базе данных и усекает их. Я нашел что-то подобное здесь , но я не знаю, работает ли это. (Вам, вероятно, следует прочитать обсуждение комментариев)

1 голос
/ 24 апреля 2018

Вы можете легко удалить все данные из функции phpmyadmin. Возможно, этой функции не было в течение 2010 года, когда этот вопрос был опубликован, но я чувствую, что все новички могут ссылаться на него.

Удалить все данные из базы данных

1 голос
/ 08 февраля 2014

Вы можете экспортировать структуры таблиц только так:

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

затем отбросьте всю базу данных, создайте ее заново и восстановите из резервной копии.

Достаточно легко написать весь сценарий.

1 голос
/ 27 марта 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 #
0 голосов
/ 22 июля 2015

На самом деле, пошел глубже и написал это:

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 DROP TABLE для удаления существующих таблиц

...