广告
返回顶部
首页 > 资讯 > 数据库 >bulk批量删除数据
  • 148
分享到

bulk批量删除数据

2024-04-02 19:04:59 148人浏览 独家记忆
摘要

bulk批量删除数据1.  案列介绍需要在一个1亿行的大表中,删除1千万行数据需求是在对数据库其他应用影响最小的情况下,以最快的速度完成如果业务无法停止的话,可以参考下列思路:根据ROW

bulk批量删除数据

1.  案列介绍

需要在一个1亿行的大表中,删除1千万行数据

需求是在对数据库其他应用影响最小的情况下,以最快的速度完成

如果业务无法停止的话,可以参考下列思路:

根据ROWID分片、再利用Rowid排序、批量处理、回表删除

在业务无法停止的时候,选择这种方式,的确是最好的

一般可以控制在每一万行以内提交一次,不会对回滚段造成太大压力

我在做大DML时,通常选择一两千行一提交

选择业务低峰时做,对应用也不至于有太大影响

2.  代码实现

测试环境

drop table t_emp purge;

create table t_emp as select * from emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

insert into t_emp select * from t_emp;

commit;

具体代码

version 1.0

declare

 cursor c_rowid is

   select rowid from t_emp where deptno = 30 order by rowid; --data need to be deleted

 type type_rowid is table of rowid index by pls_integer;

 v_tab_rowid type_rowid;

 v_num       number := 0;

begin

 open c_rowid;

 loop

   fetch c_rowid bulk collect

     into v_tab_rowid limit 50;

   --exit when c_rowid%notfound;

   forall i in v_tab_rowid.first .. v_tab_rowid.last

     delete from t_emp where rowid = v_tab_rowid(i);

   commit;

   v_num := v_num + v_tab_rowid.count;

    exit when c_rowid%notfound;

  endloop;

 close c_rowid;

 dbms_output.put_line(to_char(sysdate, 'yyyy-mm-dd:') || 'delete rows '||

                       to_char(v_num));

end;

/

version 2.0

declare

 cursor c_rowid is

   select rowid from t_emp where deptno = 30 order by rowid; --data need tobe deleted

 type type_rowid is table of rowid index by pls_integer;

 v_tab_rowid type_rowid;

 v_num       number := 0;

begin

 open c_rowid;

 loop

   fetch c_rowid bulk collect

     into v_tab_rowid limit 50;

    exit when v_tab_rowid.count=0;

   forall i in v_tab_rowid.first .. v_tab_rowid.last

     delete from t_emp where rowid = v_tab_rowid(i);

   commit;

   v_num := v_num + v_tab_rowid.count;

  endloop;

 close c_rowid;

 dbms_output.put_line(to_char(sysdate, 'yyyy-mm-dd:') || 'delete rows '||

                       to_char(v_num));

end;

/


您可能感兴趣的文档:

--结束END--

本文标题: bulk批量删除数据

本文链接: https://www.lsjlt.com/news/41139.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • bulk批量删除数据
    bulk批量删除数据1.  案列介绍需要在一个1亿行的大表中,删除1千万行数据需求是在对数据库其他应用影响最小的情况下,以最快的速度完成如果业务无法停止的话,可以参考下列思路:根据ROW...
    99+
    2022-10-18
  • MySQL 删除数据 批量删除(大量)数据
    在删除数据的时候根据不同的场景使用不同的方法,比如说删除表中部分数据、删除表的结构、删除所有记录并重置自增ID、批量删除大量数据等,可以使用delete、truncate、drop等语句。 一、方法分类 二、具体方法 类型语句删...
    99+
    2023-08-30
    mysql 数据库 java
  • oracle大数据量分批删除
    很多时候,我们要清理一个大表的数据,比如几个亿,业务还不能停,还只能delete,这种情况下分批删除是个好办法。 create or replace&n...
    99+
    2022-10-18
  • MYSQL怎么批量删除数据
    这篇文章主要介绍“MYSQL怎么批量删除数据”,在日常操作中,相信很多人在MYSQL怎么批量删除数据问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MYSQL怎么批量删除数据”...
    99+
    2022-10-18
  • SQL Server Bulk Insert如何批量数据导入
    小编给大家分享一下SQL Server Bulk Insert如何批量数据导入,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2022-10-19
  • 使用BULK INSERT大批量导入数据 SQLSERVER
    要使用BULK INSERT在SQL Server中导入大批量数据,您需要按照以下步骤进行操作:1. 创建一个包含与目标表相同列的格...
    99+
    2023-08-17
    SQLSERVER
  • PHP中怎么批量删除数据
    本篇文章为大家展示了PHP中怎么批量删除数据,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先在文章列表页面(list.php),将多选筐命名为:“$del_id[]”,值为文章ID号。 例如(li...
    99+
    2023-06-17
  • 数据库中如何批量删除数据
    这篇文章将为大家详细讲解有关数据库中如何批量删除数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 在一个Oracle数据库运行过程中,有时候会遇到要批量删除数据的情况...
    99+
    2022-10-18
  • mysql中批量删除数据的方法
    mysql中批量删除数据的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql中批量删除数据的方法:首先找出符合条...
    99+
    2022-11-30
    mysql
  • SqlServer中BULK INSERT用法简介,批量插入数据
    BULK INSERT是SqlServer中用于批量插入数据的命令。它可以将来自外部文件的数据快速加载到表中,比逐行插入数据的方式更...
    99+
    2023-09-16
    sqlserver
  • 如何使用BULK INSERT大批量导入数据SQLSERVER
    这篇文章给大家分享的是有关如何使用BULK INSERT大批量导入数据SQLSERVER的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:  CREAT...
    99+
    2022-10-19
  • mysql怎么批量删除数据库中的数据
    mysql怎么批量删除数据库中的数据?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!mysql批量删除数据库中数据的方法:通...
    99+
    2022-10-18
  • MyBatis批量插入/修改/删除MySql数据
    前言 由于项目需要生成多条数据,并保存到数据库当中,在程序中封装了一个List集合对象,然后需要把该集合中的实体插入到数据库中,项目使用了Spring+MyBatis,所以打算使用M...
    99+
    2022-11-12
  • mybatis postgresql 批量删除
    一、需求介绍  前端是一个列表页面,列表可以进行复选框的选择,后台进行关联表数据的删除。 二、框架介绍  springboot+mybatis 数据库用的postgresql 三、具体代码(前端js) 前端涉及到的代码 //判断选...
    99+
    2020-03-10
    mybatis postgresql 批量删除
  • sql批量删除数据的方法是什么
    要批量删除数据,可以使用以下方法之一:1. 使用DELETE语句和WHERE子句:可以使用DELETE语句结合WHE...
    99+
    2023-09-16
    sql
  • Oracle中批量查询、删除、更新使用BULK COLLECT提高效率的示例分析
    这篇文章将为大家详细讲解有关Oracle中批量查询、删除、更新使用BULK COLLECT提高效率的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。BULK COL...
    99+
    2022-10-18
  • mybatis-oracle(ssi2)批量删除
    student类    package com.test.hou.po; public class Student { p...
    99+
    2022-10-18
  • Vue实现单行删除与批量删除
    目录单行删除与批量删除一、单行删除二、批量删除简单的批量删除,全选删除单行删除与批量删除 一、单行删除 <el-table-column align="center" fix...
    99+
    2022-11-13
  • mysql 大表批量删除大量数据的实现方法
    问题参考自:https://www.zhihu.com/question/440066129/answer/1685329456 ,mysql中,一张表里有3亿数据,未分表,其中一个字段是企业类型,企业类型是一般企业...
    99+
    2022-05-11
    mysql 大表批量删除 mysql 大表批量
  • MongoDB删除文档的方式(删除一个、批量删除)
    目录MongoDB 删除文档(删除一个、批量删除)一、删除一个文档二、删除多个文档三、删除文档MongoDB 删除文档(删除一个、批量删除) MongoDB中提供了三种删除文档的方式...
    99+
    2023-05-16
    MongoDB 删除文档 MongoDB 批量删除
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作