2010-03-27 20 views
7

¿Cómo puedo vaciar el contenido de todas las tablas en mi base de datos en phpMyAdmin sin tirar ninguna de las tablas en la base de datos?¿Cómo puedo eliminar el contenido de todas las tablas de mi base de datos en phpMyAdmin sin soltar la base de datos?

Como hago esto varias veces por hora mientras estoy en desarrollo, prefiero no hacer clic en "Vaciar" individualmente en las más de 60 tablas cada vez.

+1

Las mayúsculas son importantes, utilícelas solo cuando sea necesario. – MarkR

Respuesta

7

Cree un script SQL con varias instrucciones DELETE (una para cada tabla) y ejecútelo.

Entre en phpMyAdmin y seleccione la base de datos que desee. Seleccione la pestaña SQL y pegue la secuencia de comandos SQL en la ventana. Hit Go.

Mira aquí también:

Drop all tables from a MySQL Database without deletion

+1

Genial, y ese SQL se puede marcar en phpMyAdmin para que pueda volver a usarlo. – Joshua

2

Desafortunadamente, no hay TRUNCATE DATABASE o equivalente. Dicho esto, probablemente puedas utilizar algún tipo de procedimiento almacenado que recorra todas las tablas en tu base de datos y trunquelas. I found something of that kind here, pero no sé si funciona. (Probablemente también debería leer la discusión de comentarios)

3

que podría comenzar con esta consulta

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

Y iterar a través de los resultados para construir una cadena SQL dinámico con la melodía de 'BORRADO DE' + T.Table_Name

1
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 # 
2

TheLa declaraciónvaciará completamente una tabla (MySql 3.23 y superior).

Puede crear un script que pueda reutilizar para una base de datos en particular. No es genérico, pero le ahorra la creación de una nueva base de datos + inicio de sesión cada vez que desea comenzar con un nuevo db.

Así es cómo crear un script usted mismo: En su navegador web, vaya a phpMyAdmin y seleccione la base de datos. Haga clic en la pestaña SQL y ejecute 'SHOW TABLES'. Elija el formato compatible con la impresora y copie el contenido en un editor de texto.

Ahora, para cada nombre de tabla que volver a escribir en el formato:

TRUNCATE TABLE <tablename>; 

Nota: se puede utilizar una expresión regular si tiene muchas mesas

+0

Si trunca una tabla como esa, ¿la clave principal volverá a comenzar en 1? – JRowan

+0

No importa esto me dijo http://www.mainelydesign.com/blog/view/difference-between-truncate-empty-delete-from-in-mysql – JRowan

1

puede exportar las estructuras de tabla única como esto:

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

a continuación, suelte toda la base de datos, recíclela y restaure desde la copia de seguridad.

Bastante fácil de guiar todo.

+0

La pregunta originalmente decía: "sin soltar la base de datos" ... – Amr

4

¡En realidad, podemos truncar todos los datos de tablas por phpMyAdmin!

En phpMyAdmin, puede hacerlo tan siguientes pasos:

1) seleccionar u DB y hacer la operación de exportación como de esta manera: Método

seleccione Exportar personalizada

  • seleccione 'Tabla de volcado -> data 'en Opciones específicas de formato
  • seleccione' Agregar DROP TABLE ... statement 'en Opciones de creación de objetos.

Por este paso, phpMyAdmin nos ayuda a crear una secuencia de comandos SQL de la lista completa de todas las tablas

3) hacer la operación de importación eliminar y crear cada tabla en blanco, uno por uno por este script

enter image description here

+0

Esta es una de las mejores respuestas porque la pregunta original sobre PhpMyAdmin, no el SQL normal, y las llamadas a la consola podrían no ser una opción si el usuario no tiene privilegios para hacerlo. – OMA

0

En realidad, fue más profundo y escribió esto:

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; 

Se selec ts todos los nombres de tabla de esquema proporcionado YOUR_TABLE_SCHEMA y los pone en una variable @command usuario, formando una consulta para cada uno como este: TRUNCATE TABLE TABLE_NAME;

entonces sólo se preparan instrucción seleccionada y ejecutarlo. Tenga en cuenta que debe declarar la variable de usuario antes de la consulta, o será 0 y arruinará nuestra declaración.

Tutorial

Usar MySQL DROP TABLE Para quitar tablas existentes

14

mi humilde opinión, la solución más fácil es:

  • En phpMyAdmin seleccione la base de datos que desea truncar en el databases- lista (lado izquierdo)
  • En la vista principal desplácese hacia abajo, verá una ficha x "Marcar todo" y junto a él un cuadro desplegable donde puede seleccionar "Vacío". Hecho.
+3

Esta es LA mejor respuesta, ya que es fácil, al grano y es la ÚNICA respuesta que hace exactamente lo que la pregunta original (eliminar todas las tablas usando PhpMyAdmin, no llamadas de consola o SQL). La siguiente mejor respuesta es la de John Yin, pero a pesar de que usó PhpMyAdmin, su método solo es útil cuando se importa una muy similar con las mismas tablas. – OMA

+0

Absolutamente la mejor respuesta usando la interfaz de usuario. – notthehoff

Cuestiones relacionadas