同一服务器多同结构数据库如何用单条MySQL命令批量执行表操作
MySQL跨库批量执行表结构更新方案
利用information_schema系统表动态生成目标库的执行语句,拼接后一次性执行,无需手动拼接库名。
可直接运行的命令模板
-- 可选:如果库数量较多先调大拼接长度上限 SET group_concat_max_len = 1024000; -- 动态生成所有目标库的执行SQL SET @exec_sql = ( SELECT GROUP_CONCAT( 'USE `', SCHEMA_NAME, '`; ', 'DROP TABLE IF EXISTS `你的第一张表名`; ', 'CREATE TABLE `你的第一张表名` (/* 替换为第一张表的完整建表语句 */); ', 'DROP TABLE IF EXISTS `你的第二张表名`; ', 'CREATE TABLE `你的第二张表名` (/* 替换为第二张表的完整建表语句 */); ', 'DROP TABLE IF EXISTS `你的第三张表名`; ', 'CREATE TABLE `你的第三张表名` (/* 替换为第三张表的完整建表语句 */); ' SEPARATOR ' ') FROM information_schema.SCHEMATA -- 匹配xx_databasename格式的库名,xx为两位字母国家码 WHERE SCHEMA_NAME REGEXP '^[a-zA-Z]{2}_databasename$' ); -- 执行生成的SQL PREPARE run_stmt FROM @exec_sql; EXECUTE run_stmt; DEALLOCATE PREPARE run_stmt;
注意事项
- 执行前可先运行
SELECT @exec_sql;打印生成的SQL,确认逻辑无误后再执行,避免误操作 - 如果需要严格的单条命令执行,把上述所有语句用分号拼接为一行即可
- 建表语句中如果存在单引号,需要加反斜杠转义,避免语法错误
内容的提问来源于stack exchange,提问作者Thallius
相关产品推荐
相关产品推荐

