`

mysql批量备份表的存储过程写法

 
阅读更多

1.在工作会遇到这种情况,mysql数据库,系统涉及到备份多表数据,为了方便,用存储过程来实现此功能,同时也复习一下存储过程的写法,同时记录下方便以后扩展修改

2.存储过程代码如下

 

-- 创建存储过程
CREATE PROCEDURE test_01()
BEGIN
-- 定义变量
DECLARE s int DEFAULT 0;
DECLARE monitorTable varchar(255);
DECLARE countTable varchar(256);
DECLARE countTableNew varchar(256);
-- 定义游标,并将sql结果集赋值到游标中
DECLARE report CURSOR FOR select DISTINCT monitor_table,count_table from t_monitorinfo ;
-- 声明当游标遍历完后将标志变量置成某个值
DECLARE CONTINUE HANDLER FOR NOT FOUND SET s=1;
-- 打开游标
open report;
-- 将游标中的值赋值给变量,注意:变量名不要和返回的列名同名,变量顺序要和sql结果列的顺序一致
fetch report into monitorTable,countTable;
-- 当s不等于1,也就是未遍历完时,会一直循环
while s<>1 do
-- 执行业务逻辑
set countTableNew = concat(countTable,'_bak');
-- 表名是参数的语法
SET @STMT =CONCAT("CREATE TABLE ",countTableNew," LIKE ",countTable,";"); 
PREPARE STMT FROM @STMT; 
EXECUTE STMT; 
SET @STMT2 =CONCAT("INSERT INTO ",countTableNew," SELECT * FROM ",countTable,";"); 
PREPARE STMT2 FROM @STMT2; 
EXECUTE STMT2; 
-- 表名非参数的语法
-- update patrolreporthistory set reportUrl = CONCAT('patrolReport.html?monitorId=',substring(report_url,15,1),'&reportId=',report_id) where reportId=report_id;
-- 将游标中的值再赋值给变量,供下次循环使用
fetch report into monitorTable,countTable;
-- 当s等于1时表明遍历以完成,退出循环
end while;
-- 关闭游标
close report;
END;

 

分享到:
评论

相关推荐

    mysql 用存储过程 备份分表

    1、修改表名 2、创建新表 3、按时间条件插入数据 由于数据太大、用的改表名的方式备份分表,通过传入表名和条件字段名备份相应的表

    mysql存储过程——用于数据库的备份与还原

    4. **自定义备份表**:为了允许用户选择要备份的特定表,存储过程需要接受参数,比如表名的列表,然后根据这些参数来决定哪些表需要被备份。 5. **错误处理和日志记录**:在存储过程中,应当包含适当的错误处理机制...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    kettle批量导出mysql存储过程

    Kettle在处理与MySQL相关的任务时,提供了丰富的数据流组件,如"数据库连接"、"获取元数据"、"读取/写入表"等,同时也包括了处理存储过程的组件。为了批量导出存储过程,我们可以构建一个Kettle转换,利用"获取...

    mysql批量导出建表语句.zip

    MySQL批量导出建表语句是一项常见的数据库管理任务,它涉及到数据库备份、迁移或复制到新的环境。在本例中,"mysql批量导出建表语句.zip" 是一个压缩包,包含了一种使用Kettle(也称为Pentaho Data Integration,...

    mysql经典教程+mysql存储过程讲解

    本教程结合"mysql经典教程+mysql存储过程讲解"的主题,将深入探讨MySQL的基础知识以及核心特性——存储过程。 首先,我们需要理解什么是数据库。数据库是一个组织和存储数据的系统,允许用户以结构化方式访问和管理...

    mysql批量建表

    利用mysql存储函数,方便快捷批量建立mysql数据库测试表

    mysql复杂存储过程实例(游标、临时表、循环、递归)

    本资源结合实例实现一个复杂的存储过程,存储过程中有用到游标、临时表、循环、递归等知识,sql文件附有实例数据表创建的sql语句。

    c++实现调mysql存储过程

    c++实现调mysql存储过程,实现存储过程的出参入参,可以支持查询多数据返回,还有存储过程的复杂数据的增删改等

    MySQL分区表自动创建及删除存储过程

    在这个特定的存储过程中,可能包括了根据某些条件(如时间、ID范围等)自动为表创建分区的逻辑,以及当不再需要某些分区时,自动删除这些分区的逻辑。这在处理大量历史数据时尤其有用,例如,可以定期清理过期的数据...

    mysql批量增加字段.txt

    MySQL批量对表增加指定字段,会快速实现批量字段的添加。写了2个存储存储过程,执行即可。方便快速!

    Mysql存储过程常用语句模板

    Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三种循环等等) Mysql存储过程常用语句模板(含变量,if,三...

    MySQL存储过程完整版使用代码示例

    资源包中囊括了MySQL数据库中的存储过程的使用包含的基本结构及日常所使用到的基本函数的使用【包括java端调用存储过程,创建临时表,动态执行sql语句,过程的递归调用,指针循环取数,批量创建表删除表,树状结构的...

    MySQL实现创建存储过程并循环添加记录的方法

    在MySQL数据库中,存储过程是一种预编译的SQL语句集合,它可以封装一系列的操作,用于执行复杂的业务逻辑。创建存储过程并循环添加记录是数据库管理中的常见任务,尤其是在需要批量插入数据时。以下将详细解释如何在...

    linux下mysql的操作与存储过程

    本文将深入探讨Linux下MySQL的基本操作以及如何创建和使用存储过程。 一、MySQL基本操作 1. 安装MySQL:在Linux上安装MySQL通常通过包管理器完成,如Ubuntu使用`apt-get`,CentOS使用`yum`。例如,安装命令可能为...

    mysql触发器+存储过程

    MySQL数据库系统提供了强大的数据库管理功能,其中两个关键的特性是触发器(Triggers)和存储过程(Stored Procedures)。这两者都是数据库编程的重要组成部分,能够帮助用户实现更复杂的数据操作和业务逻辑。 首先...

    mysql存储过程

    存储过程的简单介绍,通过一个具体的案例,实现了存储过程的主要写法。

    MySQL存储过程.pdf

    MySQL存储过程 MySQL存储过程(Stored Procedure)是一种复杂的数据库对象,允许用户将多个SQL语句组合成一个单一的执行单元,以提高数据库的性能和可维护性。下面是 MySQL 存储过程的相关知识点: 存储过程的定义...

    mysql存储过程之返回多个值的方法示例

    本文实例讲述了mysql存储过程之返回多个值的方法。分享给大家供大家参考,具体如下: mysql存储函数只返回一个值。要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程。咱们先来看一个orders表它的...

Global site tag (gtag.js) - Google Analytics