Cómo colocar todas las tablas de la base de datos sin perder la propia base de datos?

StackOverflow https://stackoverflow.com/questions/3493253

  •  28-09-2019
  •  | 
  •  

Pregunta

Me gustaría eliminar todas las tablas de la base de datos, pero no borrado de la base de datos en sí. Es posible ? Sólo estoy en busca de manera más corta que la eliminación de la base de datos y crear de nuevo. Gracias!

¿Fue útil?

Solución

El más corto es para volver a crear la base de datos. pero si usted no quiere ...

Esto es para MySQL / PHP. No se ha probado, pero algo por el estilo.

$mysqli = new mysqli("host", "my_user", "my_password", "database");
$mysqli->query('SET foreign_key_checks = 0');
if ($result = $mysqli->query("SHOW TABLES"))
{
    while($row = $result->fetch_array(MYSQLI_NUM))
    {
        $mysqli->query('DROP TABLE IF EXISTS '.$row[0]);
    }
}

$mysqli->query('SET foreign_key_checks = 1');
$mysqli->close();

Otros consejos

No hay sencilla manera de hacer esto. Ya sea que usted necesita saber lo que las mesas son de antemano:

// edición que puede obtener esta información a través de la consulta SHOW TABLE STATUS

$tables = array('users','otherdata');
foreach($tables as $table){
  db.execute("DROP TABLE "+$table);
}

o puede dejar caer la base de datos y volver a crear el tanque vacío (que no es realmente mucho esfuerzo!):

db.execute('DROP DATABASE SITEDATA');
db.execute('CREATE DATABASE SITEDATA');

tenía que abandonarlas todas las mesas en el PP por separado, para dejar caer la base de datos y volver a crearlo en realidad será la ruta más corta (y la más rápida para el caso).

Cuando tenía que hacer esto en Oracle, que escribiría una instrucción de selección que generaría las declaraciones de mesa gota para mí. Algo en el sentido de:

Seleccione 'DROP TABLE' || nombre_tabla || ';' de user_tables;

pude entonces canalizar la salida de la instrucción de selección en un archivo. Después me encontré con esto, me gustaría tener un archivo que se retiren todos mis tablas para mí. Se vería algo como:

DROP tabla Tabla1;

DROP tabla Tabla2;

DROP TABLE TABLA3;

etc ...

No es un experto en MySQL, pero me imagino que tendría una instalación similar tanto a seleccionar todas las tablas de un esquema, así como una salida directa de una sentencia SQL en un archivo.

Uso SHOW TABLE STATUS para conseguir todas las tablas de su base de datos, a continuación un bucle sobre resultado y soltar uno por uno.

Hay algunas soluciones aquí en los comentarios: http: / /dev.mysql.com/doc/refman/5.1/en/drop-table.html

Me necesitaba para dejar todas las tablas excepto un par de un volcado accidental.

Una función de PHP para soltar todas las tablas excepto algunos (adaptado de aquí ), para cualquier otra persona que pueda necesitar:

<?php
$mysqli = new mysqli( "localhost", "user", 'password', "database");
function drop_all_tables($exceptions_array, $conn) {
    $exceptions_string="('" ;
    foreach ($exceptions_array as $table) {
        $exceptions_string .=$table . "','";
    }
    $exceptions_string=rtrim($exceptions_string, ",'");
    $exceptions_string .="')" ;
    $sql="SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
         FROM information_schema.tables
         WHERE table_schema = DATABASE() AND table_name NOT IN $exceptions_string";
    $result=$ conn->query($sql);
    while($row = $result->fetch_array(MYSQLI_NUM)) {
        $conn->query($row[0]);
    }
}

//drop_all_tables(array("table1","table2","table3","table4"), $mysqli);
?>

La consulta de una sola línea a caer todas las tablas, como a continuación:

$dbConnection = mysqli_connect("hostname", "username", "password", "database_name");
$dbConnection->query('SET foreign_key_checks = 0');

$qry_drop = "DROP TABLE IF EXISTS buildings, business, computer, education, fashion, feelings, food, health, industry, music, nature, people, places, religion, science, sports, transportation, travel";            
$dbConnection->query($qry_drop);

$mysqli->query('SET foreign_key_checks = 1');
$mysqli->close();

Puede ejecutar este. Sólo tiene que añadir más tablas si me perdí ningún

drop table wp_commentmeta;
drop table wp_comments;
drop table wp_links;
drop table wp_options;
drop table wp_postmeta;
drop table wp_posts;
drop table wp_term_relationships;
drop table wp_term_taxonomy;
drop table wp_termmeta;
drop table wp_terms;
drop table wp_usermeta;
drop table wp_users;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top