2010-07-01 15 views
12

Czy można obciąć całą tabelę w bazie danych mysql? co to jest zapytanie.skrócić całą tabelę w bazie danych mysql

+0

możliwe duplikat [Obciąć wszystkich tabel w bazie danych MySQL w jednym poleceniu?] (Http://stackoverflow.com/questions/1912813/truncate-all-tables-in-a-mysql-database -in-one-command) –

Odpowiedz

6

Można zrobić to zapytanie:

select 'truncate table ' || table_name || ';' 
    from INFORMATION_SCHEMA.TABLES; 

następnie zapisać wyniki do skryptu i uruchomić go.

Inne możliwości może być,

  1. uruchomić kwerendę
  2. skopiować wyniki do schowka (Copy)
  3. wklej wyniki do MySQL interpretera poleceń (pasty)

Gotowe.

Po uruchomieniu zapytania zrozumiesz, co próbuję powiedzieć.

+0

Przepraszam, ale nie mogę zrozumieć twojego oświadczenia, zapisać wyniki w skrypcie i go uruchomić. – chetan

+0

OK, zrób to. Zaktualizuję pytanie. –

3

Niemożliwe przy użyciu pojedynczego zapytania sql.

+2

Co jest prawdopodobnie dobrą rzeczą. –

8

Kontynuując z rur @Pablo nie złączenie dla mnie - a ja chciałem go ograniczyć do jednej bazy danych, a następnie tylko tabele

SELECT CONCAT('truncate table ',table_name,';') 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = '<<YOUR-DB-NAME>>' 
AND TABLE_TYPE = 'BASE TABLE'; 
+0

Miałem ten sam problem, którego nie łączyły się druty (MySQL 5.6.15). To działało dla mnie. – nagu

2

Tutaj zostawiam wam procedurę przechowywaną, aby zresetować bazę danych do Cero

CREATE DEFINER=`root`@`localhost` PROCEDURE `reset_database`(DB_NAME VARCHAR(100)) 
BEGIN 
DECLARE done INT DEFAULT FALSE; 
DECLARE tableName VARCHAR(100); 
DECLARE cur CURSOR FOR SELECT table_name FROM INFORMATION_SCHEMA.tables WHERE table_schema = DB_NAME AND table_type = 'BASE TABLE'; 
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; 

OPEN cur; 

SET FOREIGN_KEY_CHECKS = 0; 
read_loop: LOOP 
FETCH cur INTO tableName; 
    IF done THEN LEAVE read_loop; END IF; 
    SET @s = CONCAT('truncate table ',tableName); 
    PREPARE stmt1 FROM @s; 
    EXECUTE stmt1; 
    DEALLOCATE PREPARE stmt1; 
END LOOP; 
SET FOREIGN_KEY_CHECKS = 1; 

CLOSE cur; 
END; 
5

Możesz po prostu wybrać wszystkie tabele, a następnie wybrać opcję skracania wszystkich.

enter image description here

+0

To jest naprawdę pomocne. Dziękuję Ci bardzo. Szukam tego typu rozwiązania i jest to również aplikacja w mysqlworkbench. –

Powiązane problemy