`

oracle大批量数据更新

阅读更多
比如现在对一个表增加一个流水字段,非空,唯一。
该表数据量为3000000.
假设表名为test。

1.使用cursor。
declare
    cursor c_test is select rowid from test;
    v_test c_test%rowtype;
begin
    open c_test;
    loop
        fetch c_test into v_test;
        exit when c_test%notfound;
        update test set sn = test_seq.nextval;
    end loop;
    close c_test;
end;

2.使用between ...and。
declare
   --总的记录数
   v_total number(14,0) := 0;
   --当前记录index
   v_curr number(14,0) := 0;
   --记录上一次更新的位置
   v_pri number(14,0) := 0;
begin
    --查出总共的记录数。
    select count(*) from test into v_total;
    for i in 1..v_total loop
	v_curr := v_curr + 1;
        if v_curr mod 100000 = 0 then
            update test set sn = test_seq.nextval where rownum between v_pri and v_curr;
        end if;
        --下一次更新开始的位置就是本次更新结束的位置
        v_pri := v_curr;
    end loop;

    --需要处理最后一部分数据,因为是100000次一提交,可能最后一部分不足100000,需要单独处理。
    update test set sn = test_seq.nextval where rownum between v_pri and v_total;
end;

3.每一次更新都会查目前没有更改的记录数。
declare
    --目前表中没有更改的记录数
    v_not_updated_count number(14,0) := 0;
begin
    loop
        select count(*) into v_not_updated_count from test where sn is null;
        update test set sn = test_seq.nextval where rownum <= 100000 and sn is null;
        exit when v_not_updated = 0;
    end loop;
end;


效率比较:
1和2可能效率差不多。大概要1个半小时。
3需要10分钟左右。



分享到:
评论

相关推荐

    oracle大批量数据处理.ppt

    oracle大批量处理数

    oracle分区技术-大批量数据操作

    简单讲解了oracle分区技术-大批量数据操作

    D:\Oracle大批量删除数据方法

    在Oracle数据库中,进行大批量数据删除是一项需要注意性能和安全性的任务。常见的方法包括使用DELETE语句、FOR ALL语句,以及通过存储过程实现分批删除。以下将详细阐述这些方法及其优缺点。 首先,最基本的删除...

    oracle分区技术-大批量数据操作.ppt

    oracle分区技术-大批量数据操作,优化处理,大数据量的处理

    高手的Oracle大批量删除数据的方法.htm

    高手的Oracle大批量删除数据的方法.htm

    oracle 数据仓库大批量数据处理技术.ppt

    在构建和管理Oracle数据仓库的过程中,对大批量数据的处理是一项关键任务。为了高效地处理大量数据,了解和掌握特定的技术至关重要。以下是一些核心知识点的详细解释: 1. **分区技术**:Oracle数据库提供了一种...

    从SQLServer迁移大批量数据到Oracle

    ### 从 SQL Server 迁移大批量数据到 Oracle 在 IT 领域,数据库迁移是一项常见的任务,尤其是在企业级应用中。随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将...

    oracle 分区技术-大批量数据操作

    oracle 分区技术-大批量数据操作 大数据对象 (表, 索引)被分成小物理段 当分区表建立时,记录基于分区字段值被存储到相应分区。 分区字段值可以修改。(row movement enabled) 分区可以存储在不同的表空间 分区可以...

    Oracle数据批量导入elasticsearch脚本

    Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。

    Oracle sqlldr 大批量数据导入工具

    Oracle sqlldr 大批量数据导入工具使用实例,通过Oracle 自带的sqlldr 工具可快速导入大批量的数据至Oracle中。 工具使用前提条件: 1.安装的Oracle Client 不能为精简版,要不然就找不到sqlldr.exe 2.将Oracle的...

    Oracle中大批量删除数据的方法

    Oracle中大批量删除数据的方法 Oracle中大批量删除数据的方法是数据库管理员和开发者们经常面临的挑战之一。当数据库中的数据量非常大时,删除数据的操作可能会变得非常慢,甚至影响到整个数据库的性能。因此,...

    Oracle 定时删除数据 并释放空间

    Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。

    Oracle 大批量导出至txt文件.txt

    Oracle 大批量导出至txt文件 新建一个命令窗口,执行下面脚本。注意修改目标文件名、表名

    oracle分区技术-大批量数据操作PPT课件.ppt

    Oracle 分区技术是 Oracle 数据库中的一种高级技术,用于解决大批量数据操作问题。该技术可以将大型表或索引分割成小的、独立的物理段,以提高数据的管理和查询效率。 分区技术的优点包括: * 提高查询性能:因为...

    oracle 迅速查询和更新大数据

    - **事务管理**:确保在进行大批量的数据修改时使用适当的事务管理策略,如使用保存点等,以便在出现问题时能够回滚到某个安全状态。 - **错误处理**:编写健壮的错误处理逻辑,确保在遇到异常情况时能够正确处理,...

Global site tag (gtag.js) - Google Analytics