记录一次Mysql批量复制表数据三种方式

282 阅读1分钟

,如果想要验证大数据下的场景,必须要批量造数据。批量造数据既可以通过Java实现,也可以通过MySQL本身的功能实现,本章主要学习如何使用MySQL的循环语句造大量数据

通过mysql表选中一条数据,右键选中复制为insert语句

一、使用while语句写循环

SELECT * from t_test;
DELETE from t_test;
 
-- 设置mysql分隔符为//,也就意味着,当遇到下一个//时,整体执行SQL语句
DELIMITER //
 
DROP PROCEDURE if EXISTS pdu_t_test;  -- 如果存在pdu_user存储过程则删除
CREATE procedure pdu_t_test(a int) 	-- 创建无参存储过程,名称为pdu_user
BEGIN
DECLARE i INT;  					-- 申明变量
SET i = 1;  						-- 变量赋值
WHILE i<=a DO 						-- 结束循环的条件: 当i大于a时跳出while循环
-- 往eps_after_sale_apply表添加数据
INSERT INTO `t_test` VALUES (i, CONCAT('t_10',i), '001', 'll', 'll', 1, '2021-12-16 11:50:56', '2021-12-15 11:51:03'); 
SET i = i+1;    					-- 循环一次,i加1
END WHILE;  						-- 结束while循环
SELECT * FROM t_test; 			-- 查看t_t_user表数据
END
//  # 结束定义语句
CALL pdu_t_test(10000);    				-- 调用存储过程
DELIMITER ; 					-- 重新将分隔符设置为;

二、使用repeat语句写循环

SELECT * from t_test;
DELETE from t_test;
 
DROP PROCEDURE IF EXISTS pdu_t_test;
create procedure pdu_t_test(a int)
begin
declare i int default 1;
repeat 		                -- 循环开始
INSERT INTO `t_test` VALUES (i, CONCAT('t_10',i), '001', 'll', 'll', 1, '2021-12-16 11:50:56', '2021-12-15 11:51:03'); 
set i=i+1;
until i>a end repeat;       -- 循环结束
SELECT * from t_testr;     -- 输出结果
end;
-- 执行存储过程
call pdu_t_test(10000);

三、使用loop语句写循环

DROP PROCEDURE IF EXISTS pdu_t_test;
create procedure pdu_t_test(a int)
begin
 declare i int default 1;
 loop_name:loop               -- 循环开始
  if i>a then 
    leave loop_name;          -- 判断条件成立则结束循环
  end if;
  INSERT INTO `t_test` VALUES (i, CONCAT('t_100',i), '001', 'll', 'll', 1, '2021-12-16 11:50:56', '2021-12-15 11:51:03'); 
  set i=i+1;
  end loop;                   -- 循环结束
  select * FROM t_test;     -- 输出结果
end;
 -- 执行存储过程
call pdu_t_test(10000);