注意:请先调试好,以及做好备份,再执行操作。

批量修改表

批量给前缀为 xushanxiang_content_ 的表增加一个 username 的字段:

SELECT CONCAT('ALTER TABLE ',table_name,' ADD username varchar(40) NULL COMMENT "用户名";') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';

可以得到下面一些 SQL 语句列表,也就是生成了批量修改表的语句:

之后,我们再批量执行这些 SQL 语句即可。

批量执行语句

方式一、存储过程 while 循环

# 参考代码:
DROP PROCEDURE IF EXISTS canal_test; # 删除存储过程 DELIMITER // # 设置分割符1
CREATE PROCEDURE canal_test()
BEGIN
DECLARE i INT DEFAULT 0;
WHILE i<=10 DO
update users set mileage=i;
SET i = i+1;
END WHILE;
END
//
DELIMITER; # 设置分割符2 CALL canal_test(); # 调用存储过程
 

方式二、source 命令

待执行的 sql 文件为1.sql、2.sql、3.sql、4.sql等, 写一个batch.sql文件:

source 1.sql;
source 2.sql;
source 3.sql;

在 mysql 下执行 source batch.sql; (注意路径)

如果只有一个 SQL 文件,例如 mysqltest.sql 脚本在 D 盘根目录, 进入 MySQL 的命令行窗口,直接输入如下命令即可批量执行脚本中的 sql 语句【 注:结尾不带分号执行 】

source D:\mysqltest.sql

方式三、在网站程序里动态执行

// 参考用例,可能和您的实际情况不一样
$sqlArr = $this->model->all("SELECT CONCAT('ALTER TABLE ',table_name,' ADD username varchar(40) NULL COMMENT \'用户名\';') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';");
// 得到一个SQL语句的数组;
foreach ($sqlArr as $key => $value) {
foreach ($value as $k => $v) {
$this->model->amd($v); // 依次执行sql
}
}
 

批量删除

参考 sql 如下:

SELECT CONCAT('drop table ',table_name,';') FROM information_schema.TABLES WHERE table_name LIKE 'xushanxiang\_content\_%';

接着,参考上面的进行批量执行即可。

题外话,既然说到对数据表进行批量操作,那可能少不了数据表的复制。

数据表的复制

只复制表结构到新表

create table 新表 like 旧表

复制表结构及数据到新表

create table 新表 select * from 旧表

复制一条数据到结构相同的表

INSERT INTO content_1 SELECT * FROM content_0 WHERE id=1

复制部分字段到另一个表

INSERT INTO table2 ( name , price ) SELECT name , price  FROM table1  WHERE id=5

出处:MySQL根据表前缀批量修改、删除表 (xushanxiang.com)

最新文章

  1. BIAWGN信道
  2. http://www.111cn.net/jsp/Jsp-Servlet/45158.htm
  3. Eclipse 文本显示行号
  4. think in java 读书笔记 3 —— 数据报
  5. “我爱淘”冲刺阶段Scrum站立会议1
  6. emWin(ucGui)的Edit控件退格处理方法 worldsing
  7. javascript中sleep等待实现
  8. Elasticsearch搜索类型(query type)详解
  9. UTF-8 BOM对PHP的影响
  10. XmlDocument加载有Xmlns的xml文档,使用Xpath
  11. uva 10127 - Ones(数论)
  12. Windows Form简易计算器实现(下)
  13. .net 网站应对压力的一些方案总结
  14. javaMail实现收发邮件(四)
  15. 【转】gcc 编译使用动态链接库和静态链接库
  16. 说一下acad的bug及问题
  17. django之创建第8-3个项目-数据库数据提取之高级操作
  18. Get方法和post方法有何不同?
  19. 正则表达式(三):Unicode诸问题下篇(转)
  20. RUBY Error: Please update your PATH to include build tools or download the DevKit

热门文章

  1. 两数之和_LeetCode_1
  2. gh-ost使用问题记录
  3. Blazor使用区域(Area)
  4. 2021.08.01 P4359 伪光滑数(二叉堆)
  5. spring4+springmvc+springdataJPA+hibernate4+Junit4整合懒加载问题
  6. ArcGIS建筑物简化和建筑物群聚合算法实验
  7. 分布式任务调度平台XXL-JOB安装及使用
  8. Oracle 错误表
  9. JVM垃圾回收篇
  10. MySQL left join 引发的惨案