Frage

würde Ich mag alle die Tabellen aus der Datenbank löschen, aber nicht die Datenbank zu löschen selbst. Ist es möglich ? Ich suche nur für einen kürzeren Weg als die Datenbank zu entfernen, und erstellen Sie es erneut. Dank!

War es hilfreich?

Lösung

Die kürzeste ist zur Datenbank neu zu erstellen. aber wenn Sie wollen nicht ...

Dies ist für MySQL / PHP. Nicht getestet, aber so ähnlich.

$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();

Andere Tipps

Es gibt keine einfache Möglichkeit, dies zu tun. Entweder Sie müssen wissen, was die Tische im Voraus sind:

// bearbeiten können Sie diese Informationen erhalten, indem Sie die Abfrage SHOW TABLE STATUS

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

oder Sie können die Datenbank löschen und neu erstellen leeren (es ist wirklich nicht so viel Aufwand!):

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

Sie würden jede Tabelle separat in der db fallen, also die Datenbank löschen und neu zu tatsächlich der kürzeste Weg sein (und die schnellsten für diese Angelegenheit).

Als ich hatte dies in Oracle zu tun, würde ich eine Select-Anweisung schreiben, die die Drop-Tabelle Anweisungen für mich generieren würden. Etwas in der Art von:

Wählen Sie 'DROP TABLE' || table_name || ';' von user_tables;

ich konnte dann die Ausgabe der die select-Anweisung in eine Datei. Nachdem ich dies lief, würde ich eine Datei, die alle meine Tabellen für mich fallen würde. Es wäre in etwa so aussehen:

DROP TABLE TABLE1;

DROP TABLE TABLE2;

DROP TABLE TABLE3;

etc ...

Nicht ein MySQL Experte, aber ich könnte mir vorstellen, es wäre eine ähnliche Anlage hat beide wählen Sie alle Tabellen für ein Schema, sowie die direkte Ausgabe von einer SQL-Anweisung in eine Datei.

Verwenden SHOW TABLE STATUS alle Tabellen in der Datenbank zu bekommen, dann Schleife über Ergebnis und lassen Sie sie eins nach dem anderen.

Es gibt einige Lösungen hier in den Kommentaren: http: / /dev.mysql.com/doc/refman/5.1/en/drop-table.html

Ich brauchte alle Tabellen außer ein paar von einer unbeabsichtigten Dump fallen zu lassen.

Eine PHP-Funktion alle Tabellen mit Ausnahme einiger (von hier angepasst ) fallen, für alle anderen, die benötigen:

<?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);
?>

Die Abfrage einzelne Zeile alle Tabellen zu löschen, wie folgt:

$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();

Sie können dies auszuführen. Nur mehr Tabellen hinzufügen, wenn ich jede

verpasst
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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top