mysql批量给库里的表添加字段

今天有一个需求,对库里指定的一些表进行字段的添加,因为库里这些表是属于同一张表,只不过按照日期对表进行了拆分,变成了ytx_qrcode_order_01,ytx_qrcode_order_02,ytx_qrcode_order_03这样的,所以需要新增的字段每个表里都需要添加,在这里有2种方式可以实现

第一种方式:获取一个可以执行的结果集,然后执行这个结果集的语句进行添加.

首先应该先把结果集的长度修改一下,因为如果表很多的话,会装不下,修改语句为:SET SESSION group_concat_max_len = 10240;

接下来就是:

SELECT 
GROUP_CONCAT('alter table ', table_schema, '.', table_name, ' add column platform_code varchar(50);' SEPARATOR "")  -- 需要添加的字段通过拼接得到可执行的sql语句
FROM information_schema.tables WHERE 
table_schema='库名' AND table_name LIKE 'ytx_qrcode_order%'; -- 查询库名下面以ytx_qrcode_order作为开头的表作为条件

然后把这个结果集复制,执行即可。

 

第二种方式:通过存储过程的方式

DROP PROCEDURE IF EXISTS testEndHandle;
DELIMITER $$
 
 CREATE PROCEDURE testEndHandle()
BEGIN
  DECLARE s_tablename VARCHAR(100);
 
 
#查询dcsbus库下面ytx_qrcode_order开头的表
 DECLARE cur_table_structure CURSOR
 FOR 
 SELECT table_name 
 FROM INFORMATION_SCHEMA.TABLES 
 WHERE table_schema = 'dcsbus' AND table_name LIKE "ytx_qrcode_order%";

 #异常声明返回的状态码
 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s_tablename = NULL;
 
 OPEN cur_table_structure;
 
 FETCH cur_table_structure INTO s_tablename;
 
 WHILE ( s_tablename IS NOT NULL) DO
  SET @MyQuery=CONCAT("alter table `",s_tablename,"` add COLUMN `platform_code` varchar(50) COMMENT '平台CODE'");
  PREPARE msql FROM @MyQuery;
  
  EXECUTE msql ;#USING @c; 
   
  FETCH cur_table_structure INTO s_tablename;
  END WHILE;
 CLOSE cur_table_structure;
 
END;
 $$
 
 #执行存储过程
 CALL testEndHandle();

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值