mysql批量给表添加字段

晨曦遇晓 2021-01-25 10:22:12
最近要往表里添加新的字段,因为很多张表,但是都是这样的:
ytx_qrcode_order_origin_201901,
ytx_qrcode_order_origin_201902,
ytx_qrcode_order_origin_201903
就是表名称的后面是以日期作为结尾的,现在就是要给这些表都加一个字段,如果一个个的添加就太慢了,在想有没有什么方法 比如写一个存储过程,根据前面的名称进行模糊匹配,然后对这些表进行一个字段的添加?
...全文
757 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨曦遇晓 2021-01-25
  • 打赏
  • 举报
回复
刚刚通过查询 已经找到了一种方法 那就是使用GROUP_CONCAT拼接得到查询的结果,然后拿这个结果去执行, 因为表很多 所以我先设置了查询的长度,不然查询的长度不够 SET SESSION group_concat_max_len = 10240; 接下来是结果的查询 SELECT GROUP_CONCAT('alter table ', table_schema, '.', table_name, ' add column platform_code varchar(50);' SEPARATOR "") FROM information_schema.tables WHERE table_schema='dcsbus' AND table_name LIKE 'ytx_qrcode_order%'; PS:platform_code是我要添加的字段名称,dcsbus是我的库名,ytx_qrcode_order是我需要添加的表名 前缀都是一样的 最后得到的结果是一个可以执行的sql语句,如下图: 然后把里面的内容复制执行,过程大概等了1分多钟。字段目前是添加进来了,如下图: 因为我对存储过程这块不太熟悉,看网上有使用纯粹过程的方式来实现,链接:https://blog.csdn.net/showchi/article/details/100051625 没太看懂,有没有大佬看下如果使用存储过程的话,这块应该怎么修改?
晨曦遇晓 2021-01-25
  • 打赏
  • 举报
回复 1
DROP PROCEDURE IF EXISTS testEndHandle; DELIMITER $$ CREATE PROCEDURE testEndHandle() BEGIN DECLARE s_tablename VARCHAR(100); #查询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();
八爻老骥 2021-01-25
  • 打赏
  • 举报
回复
基本的ddl操作么,拼Alter语句的字符串,再用脚本执行。

https://blog.csdn.net/qq_39706570/article/details/106014157

主要是这两句:

PREPARE sql_sentence FROM @sql_content;
/*注意参数顺序。*/
EXECUTE sql_sentence USING @param_id,@param_id2;

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧