gpt4 book ai didi

mysql - 跨多个数据库删除表

转载 作者:行者123 更新时间:2023-11-29 10:51:40 25 4
gpt4 key购买 nike

有没有办法使用MYSQL跨多个数据库删除表?我正在使用 Sequel Pro,但在 GUI 中没有看到任何选项来执行此操作,所以我想知道是否有某种命令可以执行此操作?

所有数据库中的表名都是相同的,将它们一一删除非常耗时。这确实有助于清理数据库,因为我们有数百个数据库,并且它们都共享相同的表。但是,有些表不再需要,需要删除。

希望有人可以帮助解决此问题。

最佳答案

您需要为每个表运行单独的 DROP 语句。

我们可以查询 information_schema.tables 来获取表列表...

SELECT t.table_schema, t.table_name
FROM information_schema.tables t
WHERE t.table_name = 'tablename_i_want_to_drop'
AND t.table_schema NOT IN ('mysql','information_schema','performance_schema')
ORDER BY t.table_schema, t.table_name

我们可以使用表达式代替列...

SELECT CONCAT('DROP TABLE `',t.table_schema,'`.`',t.table_name,'` ;') AS `-- stmt` 
FROM ...

然后我们可以获取该结果集并保存它,并执行脚本中的语句。 MySQL 命令行客户端允许我们获取脚本...

https://dev.mysql.com/doc/refman/5.7/en/mysql-batch-commands.html

您正在使用的客户端可能具有类似的功能,用于执行脚本。或者以某种方式复制结果集并将其粘贴到查询窗口中。

<小时/>

在 MySQL 存储程序中,我们可以运行相同的查询(以获取表列表),然后循环这些查询(使用 CURSOR),并使用 PREPARE、EXECUTE 和 DEALLOCATE PREPARE 来执行“删除表”语句。这是一种选择,但对于一次性拍摄,创建脚本会更容易。

关于mysql - 跨多个数据库删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com