`
saybody
  • 浏览: 903442 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

批量修改表引擎

阅读更多

由于今天要导入好多表,而且要批量转换为NDB引擎,备份文件的太大。打开修改不现实。所以就写了一个SP。 里面涉及到三个存储过程。

1、存储过程详细语句:

这个存储过程有点问题,要反复运行几次才能把一个有好多数据的库全部更新。
具体原因还没有查清楚,暂时不能用到生产环境。
DELIMITER $$

CREATE PROCEDURE `sp_alter_engine`(
IN f_db_name varchar(255),IN f_table_name varchar(255),
IN f_engine_name varchar(255))
BEGIN
-- Get the total of the table with given database.

declare cnt1 int default 0;
-- Increment variable.

declare i int default 0;
-- The true statement.

select count(1) from information_schema.tables where table_schema = f_db_name and `engine` is not null and `engine` != f_engine_name into cnt1;
-- To determinate whether the given table's name is empty or not.

-- Begin if.

if char_length(f_table_name) = 0 then
-- Begin while.

while i < cnt1
do
set @stmt = concat('select table_name from information_schema.tables where table_schema=''',f_db_name,''' and `engine` is not null and `engine` != ''',f_engine_name,''' limit ',i,',1 into @tbname');
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;
set @stmt = concat('alter table ',@tbname,' engine ',f_engine_name);
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;
set @stmt = NULL;
set i = i + 1;
end while;
-- End while.

else
-- Change specific table's engine.

set @stmt = concat('alter table ',f_db_name,'.',f_table_name,' engine ',f_engine_name);
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;
set @stmt = NULL;
end if;
-- End if;

END$$

DELIMITER ;


2、下面这两个结合可以用到生产环境。
1)、修改整个库,调用第三个SP。
DELIMITER $$

DROP PROCEDURE IF EXISTS `t_girl`.`sp_alter_db_engine`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_alter_db_engine`(
IN f_db_name varchar(255), IN f_engine_name varchar(255))
BEGIN
-- Get the total number of tables.

declare cnt1 int default 0;
declare i int;
set i = 0;
select count(1) from information_schema.tables where table_schema = f_db_name into cnt1;
while i < cnt1
do
set @stmt = concat('select @tbname:=table_name from information_schema.tables where table_schema=''',f_db_name,''' order by table_name desc limit ',i,',1 into @tbname');
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;
set @stmt = NULL;
set @tbname = concat(f_db_name,'.',@tbname);
call sp_alter_table_engine(@tbname,f_engine_name);
set i = i + 1;
end while;
END$$

DELIMITER ;
2)、修改单个表
DELIMITER $$

DROP PROCEDURE IF EXISTS `t_girl`.`sp_alter_table_engine`$$

CREATE DEFINER=`root`@`%` PROCEDURE `sp_alter_table_engine`(
IN f_tb_name varchar(255),IN f_engine_name varchar(20))
BEGIN
set @stmt = concat('alter table ',f_tb_name,' engine=',f_engine_name);
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;
set @stmt = NULL;
END$$

DELIMITER ;


3、测试结果:
mysql> call sp_alter_db_engine('t_girl','innodb');
Query OK, 0 rows affected (2 min 51.09 sec)
分享到:
评论

相关推荐

    帝国cms 7.0以上批量修改关键字 ,描述,副标题插件,附带有上传的样式表

    本篇将深入探讨如何在帝国CMS 7.0及以上版本中批量修改关键字、描述以及副标题,并介绍相关插件的使用,以及与之配套的上传样式表。 首先,关键词、描述和副标题是网页优化(SEO)的关键元素。关键词用于搜索引擎...

    UE4引擎批量重命名插件

    批量重命名功能在UE4中默认并不提供,但通过这款插件,开发者和制作者可以快速、高效地对项目中的资源进行批量命名操作,避免手动逐一修改的繁琐过程。这尤其适用于那些需要遵循特定命名规则或需要清理不合规命名的...

    批量字符修改器

    - **网站优化**:SEO优化时,可能需要批量替换关键词,以提升搜索引擎排名。 - **数据迁移**:在数据库迁移过程中,可能需要修改连接字符串或其他配置信息。 综上所述,批量字符修改器是一款强大的文本处理工具,它...

    文件批量修改MD5随机重命名【伪原创工具】.rar

    批量修改MD5值的需求通常出现在数据保护、隐私伪装或者测试环境中。例如,为了保护敏感信息,开发者可能会选择更改文件的MD5值,使得原始数据难以被识别。而“随机重命名”则是另一种增加数据安全性的手段,通过随机...

    批量修改文件名v1.6

    【批量修改文件名v1.6】是一款功能强大的文件管理工具,主要针对用户需要批量更改大量文件名的需求。此程序采用自定义模块设计,确保了灵活性和可扩展性,能够适应各种不同的文件命名规则和格式。它具备保存模块功能...

    VS批量设置项目引用路径

    3. **利用VS扩展**:有一些VS扩展,如`SlowCheetah`或自定义的MSBuild任务,可以帮助批量修改项目属性,包括引用路径。 4. **利用MSBuild**:MSBuild是VS的构建引擎,支持自定义脚本。通过编写MSBuild的XML脚本,...

    LNH_MySQL 13-批量修改MySQL服务引擎的多种方案.mp4

    LNH_MySQL 13-批量修改MySQL服务引擎的多种方案.mp4

    批量修改文件名

    4. 预览更改后的文件名,确认无误后执行批量修改操作。 总的来说,批量修改文件名是提高文件管理效率的一个利器,尤其对于那些需要处理大量文件的用户而言。通过这款名为"refilesname"的应用,即使是对电脑操作不太...

    VB6.0 搜索引擎批量提交程序.rar

    VB6.0 搜索引擎批量提交程序,这个程序是国外VB达人编写的,面向国外的搜索引擎,国内的百度的什么好像没在里面,不过原理基本一样,因此你可以下载下来修改一下里面提交的网址,里面的提交网址是以前的,现在已经...

    linux运维必会Mysql企业面试题.docx

    以上就是关于MySQL集群、高可用方案、读写分离实践及处理中文数据乱码和批量更改表引擎的详细解释。这些知识点对于Linux运维人员在面对企业面试时至关重要,因为它们直接关系到数据库的稳定性和高效运维。

    批量修改文件名工具批量修改文件名工具

    批量修改文件名工具是一款实用的软件工具,专为需要对大量文件进行统一命名或更改后缀名的用户设计。在日常工作中,我们经常会遇到需要整理大量文件,特别是那些需要统一格式,例如报告、图片或者文档集合。手动一个...

    PHPCMS实现数据表内容批量替换.rar_articlevcc_dust4lf_judgej6w_phpcms_tpl批量修改

    PHPCMS的模板引擎允许开发者自定义页面布局和样式,批量修改可能涉及遍历所有模板文件,寻找并替换特定文本或标签。 5. **编程技巧**:批量操作时,为了提高效率和防止意外,可以分批处理数据,避免一次性处理大量...

    linux运维必会Mysql企业面试题.pdf

    - **直接SQL语句**:登录MySQL,使用`ALTER TABLE`语句批量更改表引擎,如`ALTER TABLE table_name ENGINE = InnoDB;`。 5. **其他面试要点** - **性能优化**:索引设计、查询优化、慢查询日志分析、存储过程和...

    Advanced Find and Replace v2.0网页内容批量修改替换

    Advanced Find and Replace v2.0是一款专业的文本处理工具,尤其在网页内容的批量修改和替换方面表现出色。这款软件能够极大地提升工作效率,特别是在处理大量网页文件时,避免了手动逐个修改的繁琐过程。 首先,...

    replall 批量修改网页内容的小工具

    在SEO优化中,批量修改标题标签()、描述标签()和关键词标签()是常见的应用场景,有助于提升网站在搜索引擎中的排名。 在提供的压缩包文件名称列表中,“replall 批量修改网页内容的小工具”可能是包含replall...

    苹果账号批量检查工具

    1. `node.dll`:这可能是一个动态链接库文件,用于提供与Node.js相关的功能,Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可能被用来处理异步I/O,以实现高效的多线程操作。 2. `gzip.dll`:Gzip是一个...

    Python实现批量更改Excel文件中200多个工作表的内容

    通过以上步骤,我们可以用Python实现对Excel文件的批量修改,极大地提高了工作效率。这个过程不仅适用于单个文件,还可以扩展到处理同一目录下的多个Excel文件,只需要进行适当的路径处理和循环即可。在数据处理工作...

    帝国批量修改意见存在的文件名

    "帝国批量修改意见存在的文件名"这个标题指的是在帝国CMS系统中进行的一项操作,即批量地修改网站中文件的名称。这可能是为了优化网站的管理,统一文件命名规范,或者解决因特殊字符导致的访问问题。帝国CMS是一款...

    python自动办公 批量更改Excel文件中200多个工作表的内容

    在批量修改Excel文件时,我们通常先使用`pandas.read_excel()`函数读取Excel文件,将所有工作表加载到一个DataFrame的列表中。 ```python import pandas as pd # 读取Excel文件,包含所有工作表 xls = pd.Excel...

Global site tag (gtag.js) - Google Analytics