mysql使用存储过程实现插入大规模量模拟数据-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 1637525
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: mysql/postgresql

2016-04-12 14:20:01

        有些时候对于mysql需要进行一些测试,或者项目上线前的测试,这时候就需要使用一些模拟数据。在即将上线的系统中插入接近线上的真实数据,本来使用shell也是能实现,但是发现shell确实效率太低,根本无法利用服务器资源,所以选择使用mysql的存储过程来实现。
         代码贴出  
        一对一 t_warehouse_order.order_code -->t_warehouse_waybill.order_code   使用游标遍历单字段数据,每2000条一次事务。

点击(此处)折叠或打开

  1. delimiter //
  2. drop procedure if exists insert_waybill;
  3. create procedure insert_waybill ()
  4. begin
  5.     declare fig int default 0;
  6.     declare var int default 0;
  7.     declare code varchar(10);
  8.     declare sw int default 0;
  9.     declare yb01 cursor for select order_code from t_warehouse_order;
  10.     declare continue handler for not found set fig=1;
  11.     open yb01;
  12.     start transaction;
  13.     loop_lable01:loop
  14.     fetch yb01 into code;
  15.      if fig=1 then
  16.       leave loop_lable01;
  17.      end if;
  18.     insert into t_warehouse_waybill ( id,order_code values  ( var,code);
  19.        set sw=sw1;
  20.        set var=var1;
  21.          if (sw%2000=0) then
  22.               commit;
  23.           start transaction;
  24.          end if;
  25.     end loop loop_lable01;
  26.      commit;
  27.     close yb01;

  28. end
  29. //
  30. delimiter ;
        一对多比例是1:40  使用嵌套循环 加双游标 

点击(此处)折叠或打开

  1. delimiter //
  2. drop procedure if exists packwaybill;
  3. create procedure packwaybill ()
  4. begin
  5.     declare kig int default 0;
  6.     declare wano varchar(20);
  7.     declare pkno varchar(20);
  8.     declare k int default 0;
  9.     declare sw int default 0;
  10.     declare wa01 cursor for select waybill_no from t_warehouse_waybill;
  11.     declare pk01 cursor for select package_no from t_warehouse_package;
  12.     declare continue handler for not found set kig=1;
  13.     open pk01;
  14.     open wa01;
  15.     start transaction;
  16.     loop_lable01:loop
  17.     fetch pk01 into pkno;
  18.      if kig=1 then
  19.       leave loop_lable01;
  20.      end if;
  21.      set k=0 ;
  22.      while k<40 do
  23.     fetch wa01 into wano;
  24.     insert into t_warehouse_package_relation_waybill (package_no,way_bill_no)
  25.          values ( pkno,wano);
  26.        set sw=sw1;
  27.        set k=k1;
  28.          end while;
  29.          if (sw%2000=0) then
  30.               commit;
  31.           start transaction;
  32.          end if;
  33.     end loop loop_lable01;
  34.      commit;
  35.     close wa01;
  36.     close pk01;

  37. end
  38. //
  39. delimiter ;
     要是有更多更复杂的数据关系建议考虑nosql了,毕竟关系型数据库处理的关系能力有限。
阅读(3459) | 评论(0) | 转发(1) |
0

上一篇:mysql explain分析

下一篇:mysql运行状态查看

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图