我有100张数据表,我只想保留其中一张。
我尝试了以下查询语句:
DROP ALL TABLES EXCEPT my_table
但是好像不存在这样的东西。有什么想法吗?
我有100张数据表,我只想保留其中一张。
我尝试了以下查询语句:
DROP ALL TABLES EXCEPT my_table
您可以使用列出多个表的DROP TABLE语句,并使用MySQL预处理语句运行查询 -
SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables
WHERE table_schema = 'Database1' AND table_name <> 'my_table';
SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
在MySQL中,您无法删除多个表。
在您的情况下,最简单的方法是导出您想要保留的表(使用像mysqldump
这样的工具),然后删除和重新创建数据库。
C:\Program Files (x86)\Parallels\Plesk\Databases\MySQL\data\user_db\...
你希望在那里轻松地进行删除操作?这就是我所做的,看起来很有效。
你可以构建所有的DROP语句,将它们输出到信息文件中,然后在之后使用该文件。
SELECT CONCAT( 'DROP TABLE ', table_name , ';' ) AS statement FROM information_schema.tables WHERE table_name not like 'table_to_keep' and table_schema like 'your_schema' into outfile 'path_to_file;
source path_to_file;
你可以使用 mysqldump
,试试看!
mysqldump -u[USERNAME] -p[PASSWORD]--add-drop-table --no-data [DATABASE] |
grep ^DROP |
grep -v 'my_table' |
mysql -u[USERNAME] -p[PASSWORD] [DATABASE]