`
king123654789
  • 浏览: 286587 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mysql 存储过程批量插入

 
阅读更多
CREATE PROCEDURE `Proc_ExtRmData`()
BEGIN

  -- 需要定义接收游标数据的变量

  DECLARE v_BiotopeID Varchar(36);
  DECLARE v_BuildingID Varchar(36);
  DECLARE v_UnitID Varchar(36);
  DECLARE v_UnitNo int(1);
  DECLARE v_HouseID Varchar(36);
  DECLARE v_RoomID Varchar(40);
  DECLARE v_RoomName Varchar(36);
  DECLARE v_FloorNo int(1);
  DECLARE v_FloorArea int(2);
  DECLARE v_InsideArea int(2);
  DECLARE v_ChargeArea int(2);
  DECLARE v_HouseType Varchar(16);
  DECLARE v_Direction Varchar(8);
  DECLARE v_HouseholdCount int(1);
  DECLARE v_Balance FLOAT(8,2);
  DECLARE v_FeeTypeID Varchar(36);
  DECLARE v_FeeType Varchar(36);
  DECLARE v_HouseKeeperID Varchar(36);
  DECLARE v_PaFlag int(1);
  DECLARE v_State Varchar(8);
  DECLARE v_UseType Varchar(8);
  DECLARE v_RentType Varchar(8);
  DECLARE v_LiveFlag int(1);
  DECLARE v_UseTypeCode int(1);
  DECLARE v_RentTypeCode int(1);

  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;

  -- 游标
  DECLARE cur CURSOR FOR
  SELECT 
    b.BiotopeID,b.BuildingID,u.BuildingUnitID,u.UnitNo,r.RoomID,r.RoomNo,r.Layer,
    r.AreaBuild,r.AreaUse,r.AreaFee,r.HouseType,r.TowardTo,r.PeopleNumber,
    r.Money,r.FeeTypeID,r.FeeType,r.WorkerID,r.IsCheckManager,r.State,r.UseType,r.RentType
  From Etl_Biotope as a, Etl_Building as b, Etl_Unit as u, tblRoom as r
  where (a.BioID='LE34F235') and (a.BiotopeID=b.BiotopeID) and (b.BuildingID=u.BuildingID) and (u.UnitID=r.Unit);

  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
 
  -- 开始循环
  read_loop: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH cur INTO v_BiotopeID,v_BuildingID,v_UnitID,v_UnitNo,v_RoomID,v_RoomName,v_FloorNo,
    v_FloorArea,v_InsideArea,v_ChargeArea,v_HouseType,v_Direction,v_HouseholdCount,
    v_Balance,v_FeeTypeID,v_FeeType,v_HouseKeeperID,v_PaFlag,v_State,v_UseType,v_RentType;
 
    -- 声明结束的时候
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- 这里做你想做的循环的事件
    set v_HouseID = lower(substr(v_RoomID,2,36));

    CASE  v_State 
       WHEN '登记' THEN set v_LiveFlag = 0;
       WHEN '未住' THEN set v_LiveFlag = 1;
       WHEN '已住' THEN set v_LiveFlag = 2;
       WHEN '已租' THEN set v_LiveFlag = 3;
       ELSE set v_LiveFlag = 1; 
    END CASE; 

    IF (v_LiveFlag = 0) or (v_LiveFlag = 1) or (v_UseType='临建')
    THEN set v_UseTypeCode=0;
    ELSEIF (v_UseType='住宅')
    THEN set v_UseTypeCode=1;
    ELSE set v_UseTypeCode=2;
    END IF;

    INSERT INTO Etl_House
    (BiotopeID,BuildingID,UnitID,UnitNo,HouseID,RoomID,RoomName,FloorNo,
    FloorArea,InsideArea,ChargeArea,HouseType,Direction,HouseholdCount,
    Balance,FeeTypeID,FeeType,HouseKeeperID,PaFlag,LiveFlag,UseType)
    VALUES (v_BiotopeID,v_BuildingID,v_UnitID,v_UnitNo,v_HouseID,v_RoomID,v_RoomName,v_FloorNo,
    v_FloorArea,v_InsideArea,v_ChargeArea,v_HouseType,v_Direction,v_HouseholdCount,
    v_Balance,v_FeeTypeID,v_FeeType,v_HouseKeeperID,v_PaFlag,v_LiveFlag,v_UseTypeCode);

  END LOOP;
  -- 关闭游标
  CLOSE cur;

END
分享到:
评论

相关推荐

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

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

    百万数据批量插入存储过程

    mysql 数据库已存储过程插入一千万条测试数据!利用项目即将上限需要,可以完全系统的测试项目性能!里面又完整的文档和各项说明:打开文档就可以实际操作。

    mysql利用存储过程批量添加数据库表随机测试内容

    mysql利用存储过程批量添加数据库表随机测试内容

    数据库存储过程批量生成十万条数据

    批量插入百万条数据,自定义函数,动态生成数据,伪造真实数据。

    生成insert语句的存储过程

    sqlserver的存储过程批量生成insert插入语句 在需要批量导入数据或者保留数据的情况下使用

    Django2+ MySQL8 数据插入和查询

    Django2+ MySQL8 数据插入和查询 Django2+ MySQL8 数据插入和查询

    Mysql存储过程中游标的用法实例

    本文实例讲述了Mysql存储过程中游标的用法。分享给大家供大家参考。具体如下: 1. 批量插入商户路由关联数据: DELIMITER $$ USE `mmm_mac`$$ DROP PROCEDURE IF EXISTS `批量插入商户路由关联数据`$$ CREATE ...

    MYSQL开发性能研究之批量插入数据的优化方法

    但是当我们需要批量插入数据的时候,这样的语句却会出现性能问题。例如说,如果有需要插入100000条数据,那么就需要有100000条insert语句,每一句都需要提交到关系引擎那里去解析,优化,然后才能够到达存储引擎做真...

    mybatis中批量插入的两种方式(高效插入)

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。这篇文章主要介绍了mybatis中批量插入的两种方式(高效插入)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧

    MySQL使用游标批量处理进行表操作

    一、概述 本章节介绍使用游标来批量进行表操作,包括批量添加索引、批量添加字段等。...理解MySQL存储过程和函数://www.jb51.net/article/81381.htm 二、正文 1、声明光标 DECLARE cursor_name CURSOR FOR se

    MySql批量插入优化Sql执行效率实例详解

    主要介绍了MySql批量插入优化Sql执行效率实例详解的相关资料,需要的朋友可以参考下

    mysql 循环批量插入的实例代码详解

    测试时没有数据,便安装了一个MySql,建了张表,在建了个while循环批量插入10W条测试数据的时候,执行时间之长无法忍受,便查资料找批量插入优化方法,这里做个笔记。 数据结构 寻思着分页时标准列分主键列、索引列...

    Mybatis传list参数调用oracle存储过程的解决方法

    怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下

    C#+Mysql将图片批量转为2进制并存入数据库中

    做项目需要,自己写的。可以批量选择一个文件夹中的图片并按指定序号存入数据库中,代码是C#写的,选图片时要注意逆向选,这样存到数据库中才是正确的顺序(可以看哪个显示选择文件的对话框,里面有文件顺序)

    mysql高级视频教程百度云(2019).txt

    50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑...

    尚硅谷Java视频教程_MySQL高级视频

    尚硅谷_MySQL高级_批量插入数据脚本 · 51.尚硅谷_MySQL高级_用Show Profile进行sql分析 · 52.尚硅谷_MySQL高级_全局查询日志 · 53.尚硅谷_MySQL高级_数据库锁理论概述 · 54.尚硅谷_MySQL高级_读锁案例讲解 ...

    mysql 从一个表中查数据并插入另一个表实现方法

    不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段。 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表...

    详解mysql数据库增删改操作

    批量插入 单条插入和批量插入的效率问题 mysql多条数据插入效率大于单条数据插入 删除记录 delete from 表名 [where 条件] 如果没有指定条件,会将表中数据一条一条全部删除掉。 delete删除数据和truncate删除...

    MySQL BLOB类型中二进制字段和批量操作输入.docx

    MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。 插入BLOB类型的数据必须使用PreparedStatement,因为BLOB类型的数据无法使用字符串拼接写的。 MySQL的四种BLOB类型...

    Mysql中存储UUID去除横线的方法

    主要介绍了Mysql中存储UUID去除横线的方法,本文给出了3个Mysql函数实现去除去UUID中的横线,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics