vaciar una tablas tabla registros registro fila eliminar ejemplo delete datos contenido como borrar mysql

tablas - mysql borrar todo el contenido de una tabla



Cómo vaciar todas las filas de todas las tablas en mysql(en sql) (4)

Si está en Unix / Linux, puede usar el shell para ejecutar:

mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]

O bien, Rational Relational tiene una publicación de blog sobre cómo escribir un procedimiento almacenado para hacer esto.

Estoy escribiendo algunas secuencias de comandos de utilidad db, y una de las tareas que tengo que hacer es reconstruir solo los datos, pero dejar el esquema intacto. ¿Cuál es la forma más fácil de automatizar esto desde la línea de comandos usando bash y las herramientas mysql (sin php, etc.)?

Actualización: me gustaría que la solución maneje todas las tablas en un comando, y si es posible, no necesita ser actualizada si las tablas son agregadas o eliminadas.


Aquí hay un BASH one-liner para truncar todas las tablas de una lista de bases de datos:

for j in database_name1 database_name2; / do for i in `echo ''show tables '' |mysql $j / |grep -v ''Tables_in''`; do mysql $j -e "truncate $i"; done; done

Tenga en cuenta que truncar eliminará todos los datos de las tablas de destino sin ninguna solicitud. Quizás cambie "truncar $ i" por "describir $ i" primero para asegurarse de que las tablas en el conjunto de resultados sean las destinadas a ser vaciadas.

Una cosa más: si quieres iterar sobre cada tabla en todas las bases de datos MySQL (¡excepto information_schema y mysql , espero!), Sustituye lo siguiente por "database_name1 database_name2" anterior:

`echo ''show databases'' | mysql | awk ''$1 != "information_schema" && / $1 != "mysql" {if (NR > 1) {print}}''`

Entonces, aquí hay una muestra que es menos destructiva; realiza OPTIMIZE para todas las tablas en cada base de datos MySQL (excepciones como se indicó anteriormente):

for j in `echo ''show databases'' | mysql | / awk ''$1 != "information_schema" && $1 != / "mysql" {if (NR > 1) {print}}''`; do for i in / `echo ''show tables '' |mysql $j |grep -v / ''Tables_in''`; do mysql -e "optimize table $j.$i"; / done; done

¡Modifique la "acción" realizada según sea necesario y con mucho temor!


TRUNCATE tableName;

Esto vaciará el contenido de la tabla.

Edite en respuesta a la edición Q: parece que de mi prueba rápida tendrá que hacer al menos 2 consultas, ya que parece que "mostrar tablas" no se puede usar como una sub consulta, no sé cómo hacer esto en bash entonces aquí hay un ejemplo de PHP, espero que ayude.

<?php mysql_connect(''localhost'', ''user'', ''password''); $dbName = "database"; mysql_select_db($dbName); /*added semi-colon*/ $result_t = mysql_query("SHOW TABLES"); while($row = mysql_fetch_assoc($result_t)) { mysql_query("TRUNCATE " . $row[''Tables_in_'' . $dbName]); } ?>

Como mínimo, esto necesita un poco de manejo de errores.