2010-07-01 27 views
12

¿Es posible truncar toda la tabla en la base de datos mysql? que es consulta para eso.truncar toda la tabla en la base de datos mysql

+0

posible duplicado de [truncar todas las tablas de una base de datos MySQL en un solo comando?] (Http://stackoverflow.com/questions/1912813/truncate-all-tables-in-a-mysql-database -in-one-command) –

Respuesta

6

Usted puede hacer esta consulta:

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

A continuación, guardar los resultados en un script y ejecutarlo.

Otra posibilidad podría ser,

  1. Ejecutar la consulta
  2. copiar los resultados en el portapapeles (copiar)
  3. pegue los resultados en el intérprete de comandos de MySQL (pasta)

Hecho.

Si solo ejecuta la consulta entenderá lo que estoy tratando de decir.

+0

lo siento, pero no puedo entender su declaración, guardar los resultados en un script y ejecutarlo. – chetan

+0

Bien, haz esto. Actualizaré la pregunta. –

3

No es posible usar una sola consulta SQL.

+2

Cuál es probablemente una buena cosa. –

8

Continuando con tubos @Pablo no fueron concatenando para mí - y quería limitar a una sola base de datos y sólo las tablas

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

Tuve el mismo problema que las tuberías no concatenan (MySQL 5.6.15). Esto funcionó para mí. – nagu

2

Aquí os dejo un procedimiento almacenado para restablecer su base de datos a 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

Puede simplemente seleccionar todas las tablas y luego seleccionar truncar todo.

enter image description here

+0

Esto es realmente útil. Muchas gracias. Estoy buscando este tipo de solución y también es una aplicación en mysqlworkbench. –

Cuestiones relacionadas