如何将所有表放入数据库中而不删除数据库本身?
-
28-09-2019 - |
题
我想从数据库中删除所有表,但不要删除数据库本身。是否可以 ?我只是在寻找较短的方式,而不是删除数据库并再次创建它。谢谢 !
解决方案
最短的是重新创建数据库。但是,如果您不想...
这是针对MySQL/PHP。未经测试,但类似的东西。
$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();
其他提示
没有简单的方法可以做到这一点。您要么需要知道表的前面是什么:
//编辑您可以使用查询获取此信息 SHOW TABLE STATUS
$tables = array('users','otherdata');
foreach($tables as $table){
db.execute("DROP TABLE "+$table);
}
或者,您可以删除数据库并将其重新创建(实际上不是那么努力!):
db.execute('DROP DATABASE SITEDATA');
db.execute('CREATE DATABASE SITEDATA');
您必须分别丢弃DB中的每个表格,因此丢弃数据库并重新创建它实际上将是最短的路线(这是最快的路线)。
当我必须在Oracle中这样做时,我会编写一个选择的语句,该语句将为我生成Drop表语句。效果:
选择“下降表” || table_name || ';'来自user_tables;
然后,我可以将Select语句的输出输送到文件。运行此功能后,我会有一个文件,可以为我放下所有的桌子。看起来像:
Drop Table Table1;
Drop Table Table2;
Drop Table Table3;
ETC...
不是MySQL专家,但我想它将具有类似的设施,可以选择所有架构的所有表,以及从SQL语句直接输出到文件。
采用 SHOW TABLE STATUS
要将所有表获取数据库中的所有桌子,请循环浏览结果,然后将它们逐一放置。
这里的评论中有一些解决方案: http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
我需要丢下所有桌子,除了一对无意中的垃圾场。
php功能丢弃除某些表外的所有表(改编自 这里),对于其他可能需要的人:
<?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);
?>
单行查询要丢弃所有表,如下:
$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();
您可以执行此操作。如果我错过了任何东西,请添加更多桌子
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;