存储过程实现批量插入数据
程序员文章站
2024-03-17 20:04:34
...
前几天在公司做一业务模块测试的时候,将测试都删除了,导致客户端想拿测试数据拿不到了,一下没时间一条一条的录数据,所以只有采取存储过程实现模拟数据插入。
数据需求:
有两个字段类型是Decimal,保留两位小数。还有两种时间: 第一个格式是"yyyyMMDD" 第二种是时间戳格式但是比第一种时间大一天。同时还有一个字段是存放前一天(类型是Decimal 其中一个)数据和今天数据差值。了解了大概业务需求,接着开始写mysql 存储过程。
代码如下:
delimiter // /**加 // 代表默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。 因为mysql一遇到分号,它就要自动执行。 即,在语句RETURN '';时,mysql解释器就要执行了。 这种情况下,就需要事先把delimiter换成其它符号,如//或$$**/
create PROCEDURE test()/* 名字可以替换 最好和这个方法做的时吻合 我这个就是一个测试**/
begin /* 方法开始固定语法*/
DECLARE i int;/**定义一个变量 控制循环 类似java 中for循环变量 **/
DECLARE j DOUBLE;
DECLARE cv DOUBLE;
DECLARE temp DOUBLE;
DECLARE cvRatio DOUBLE;
DECLARE mydate varchar(30);
DECLARE sdate varchar(30);
DECLARE tempstr varchar(30);
set i =0;
set j =2.13;
set cv = 0;
set temp = 0;
set sdate = '20171201';
set mydate =unix_timestamp(date_add(sdate, interval 1 day));
set cvRatio = 0;
while i<140 DO
insert into qz_share_bonus(share_day,share_money,share_quzubi,add_time,share_time,is_share,change_quzubi,change_ratio) values(sdate,j,j,mydate,mydate,1,cv,cvRatio);
set i = i+1;
set temp = j;
set j = format(RAND()*6,2)+0.01;
set sdate = date_format(date_add(sdate, interval 1 day),'%Y%m%d');
set mydate = unix_timestamp(date_add(sdate, interval 1 day));
set cv = j- temp;
set cvRatio = cv/temp*100;
end while;
end;//
call test() /**执行test 存储过程**/
执行结果:
推荐阅读
-
存储过程实现批量插入数据
-
Oracle数据库子程序之存储过程和函数调用
-
mysql存储过程详解 博客分类: 数据库 mysql存储过程
-
mysql批量新增千万级数据脚本(函数+存储过程)
-
sqlserver存储过程插入一年的日期到一个表 博客分类: sqlserver 存储过程 sqlserver存储过程日期
-
Navicat for MySQL 函数 存储过程 遍历创建大量复杂结构测试数据
-
MySQL - 使用存储过程快速制造大量测试数据
-
php使用PDO事务配合表格读取大量数据插入操作实现方法
-
yii2使用GridView实现数据全选及批量删除按钮示例
-
java数据结构与算法之插入算法实现数值排序示例