备份一个数据库中每个表的100条数据的存储过程

drop PROCEDURE if exists sp_backup_db_100rows;

delimiter //
CREATE  PROCEDURE sp_backup_db_100rows() 

BEGIN
DECLARE v_sql varchar(200); -- 要执行的动态sql语句
DECLARE c_each_table_name varchar(20); -- 存放每个表名

declare no_more_departments integer DEFAULT 0;  -- 定义游标遍历时,作为判断是否遍历完全部记录的标记

-- 获取数据库中所有表名的游标
DECLARE  c_tablename CURSOR FOR SELECT  TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'abs_extra';


CREATE DATABASE if not exists abs_extra_copy;


OPEN  c_tablename; 

REPEAT

fetch c_tablename into c_each_table_name; -- 取出每条记录并赋值给相关变量,注意顺序
set v_sql= concat('CREATE TABLE abs_extra_copy.', c_each_table_name , ' AS SELECT * FROM  abs_extra.', c_each_table_name , ' LIMIT 100;');

set @v_sql=v_sql; -- 将连成的字符串赋值给一个变量

 prepare stmt from @v_sql;  -- 预处理需要执行的动态SQL,其中stmt是一个变量
 EXECUTE stmt;      -- 执行SQL语句

 deallocate prepare stmt;     -- 释放掉预处理段


until no_more_departments end REPEAT;

CLOSE c_tablename;

END //
delimiter ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值