文档章节

Mysql游标使用 批量插入或更新数据

Jesons
 Jesons
发布于 2015/05/08 12:50
字数 338
阅读 1595
收藏 3
点赞 1
评论 3
-- LOOP循环
CREATE PROCEDURE `test`.`new_procedure` ()
BEGIN
-- 需要定义接收游标数据的变量 
  DECLARE a CHAR(16);
  -- 游标
  DECLARE cur CURSOR FOR SELECT i FROM test.t;
  -- 遍历数据结束标志
  DECLARE done INT DEFAULT FALSE;
  -- 将结束标志绑定到游标
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  -- 打开游标
  OPEN cur;
  
  -- 开始循环
  read_loop: LOOP
    -- 提取游标里的数据,这里只有一个,多个的话也一样;
    FETCH cur INTO a;
    -- 声明结束的时候
    IF done THEN
      LEAVE read_loop;
    END IF;
    -- 这里做你想做的循环的事件

    INSERT INTO test.t VALUES (a);

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

END;

注:变量的定义不要和你的select的列的键同名!不然,fetch into 会失败!

另外 :

如果没有则插入数据,如果有则更新的方法:

insert into `test` values (a,b) ON DUPLICATE KEY UPDATE `a`=c;



-- while循环
create procedure curdemo()
begin
       declare stop_flag int DEFAULT 0;//声明一个标记,当游标状态为最后一条记录时,修改该变量
	declare id int default 0;
	declare type int default 0;
	declare order1 int default 0;
	declare cur1 cursor for select * from test1;
       declare CONTINUE HANDLER FOR SQLSTATE '02000' SET stop_flag=1;  
       open cur1;//打开游标

       fetch cur1 into id,type,order1;读取数据到游标
       while stop_flag<>1 DO//若游标有下一条记录,循环
	    insert into test2 values(id,type,order1);
           fetch cur1 into id,type,order1;
       end while;
       close cur1;//关闭游标
end;



© 著作权归作者所有

共有 人打赏支持
Jesons
粉丝 33
博文 56
码字总数 47373
作品 0
江北
程序员
加载中

评论(3)

倒影年华
需要commit?
Jesons
Jesons

引用来自“潜心修炼呀”的评论

这是批量么。。
潜心修炼呀
这是批量么。。
使用BULK COLLECT+FORALL加速批量提交

一、 批量提交 批量提交特点: 占用较少undo,资源(独占锁,undo)快速释放,执行时间长 批量提交适合场景: 在线大批量插入,更新,删除数据 二、 BULK COLLECT+FORALL性能提升 1.通过BULK COLLECT加...

楚云泽
2016/03/21
264
0
python的数据库操作

使用python可以很方便的操作数据库,刚刚开始学python,第一个脚本是导出数据库到指定位置,下面简明总结下python的数据库操作 下载安装python环境,下载MySQLdb,MySQLdb是python的数据库操...

晨曦之光
2012/04/13
149
0
Mongo的一些心得

一.mongo-java-driver 项目中使用的是java原生mongo操作api,个人觉得,不是那么的方便,资料好像也比较少,只有官方文档可供使用 基础用法不再啰嗦,特别介绍下mongo的批量查询和批量插入。...

清风傲剑
2015/09/29
1K
0
Python操作数据库之 MySQL

Python操作数据库之MySQL 一、安装Python-MySQLdb模块 Python-MySQLdb是一个操作数据库的模块,Python 通过它对 mysql 数据实现各种操作。 如果要源码安装,可以这里下载: https://pypi.Pyth...

四京
2017/12/26
0
0
SQL查询提速秘诀,避免锁死数据库的数据库代码

由于数据库领域仍相对不成熟,每个平台上的 SQL 开发人员都在苦苦挣扎,一次又一次犯同样的错误。当然,数据库厂商在取得一些进展,并继续在竭力处理较重大的问题。 无论 SQL 开发人员在 SQ...

技术小能手
04/28
0
0
《MySQL必知必会》读书笔记(四) 22~30章 完结篇

1、视图 视图不包含表中应该有的任何列或数据,它包含的是一个SQL查询。在视图创建之后,可以用于表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视...

一万
2016/02/08
329
0
第 13 章 批量处理(Batch processing)

第 13 章 批量处理(Batch processing) 使用Hibernate将 100 000 条记录插入到数据库的一个很自然的做法可能是这样的 Session session = sessionFactory.openSession();Transaction tx = se...

扁-哥
2013/03/28
0
0
python之MySQLdb的基本操作

什么是MySQLdb? MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。 如何安装MySQLdb? 为了用DB-API编写MySQL脚本,必须确保已...

LinQiH
2017/10/26
0
0
Bulk Upsert for MySQL & PostgreSQL

什么是 Upsert "UPSERT" is a DBMS feature that allows a DML statement's author to atomically either insert a row, or on the basis of the row already existing, UPDATE that existin......

hooopo
2017/03/03
0
0
Mybatis插入/删除批处理

文章作者:Tyan 博客:noahsnail.com | CSDN | 简书 在操作数据库时,经常会碰到批量插入、批量删除的情况,直接执行SQL语句还好做一点,当使用Mybatis进行批量插入、批量删除时会有一些问题...

Quincuntial
2016/11/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
0
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部