比如现在对一个表增加一个流水字段,非空,唯一。 该表数据量为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分钟左右。
- 浏览: 240313 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (295)
- 数据库 (44)
- Java Web (26)
- Js+Css+Html (52)
- 证券 (1)
- 技术书籍 (2)
- Log4j (2)
- 收发邮件 (3)
- UML (6)
- tomcat (1)
- 开发工具 (21)
- java基础 (46)
- 设计模式 (2)
- Java Web Start (2)
- 即时通信解决方案 (2)
- Ant (7)
- 持续集成 (1)
- android (10)
- Ibatis (2)
- WebService (2)
- Ext (42)
- Ejb (2)
- flex (2)
- struts (5)
- dwr (1)
- 一笑而过 (2)
- FreeMarker (1)
- excel (2)
- hibernate (2)
- Jbpm (1)
- spring (1)
- Windows7 仿 WindowsXP 风格的主题 . (0)
- 情感 (0)
- 平安业务知识 (1)
- 报表 (2)
- 集群/负载均衡 (1)
- Linux (1)
- 单元测试 (1)
- Html5&Css3 (5)
最新评论
-
guji528:
很前面,不错
StarUML使用说明-指导手册 -
qincidong:
freezingsky 写道忘记是tomcat5还是5以前的版 ...
让Tomcat支持目录浏览 -
freezingsky:
忘记是tomcat5还是5以前的版本,默认是开启目录浏览的。那 ...
让Tomcat支持目录浏览 -
314649444:
不错,挺实用的 配置
让Tomcat支持目录浏览
发表评论
-
MySQL命令行执行SQL脚本
2013-09-05 14:27 671MySql命令行执行SQL的2种方式: 第一种方式:在未 ... -
oracle group by子句的几种用法
2013-08-14 15:39 1224Oracle的GROUP BY语句除了最基本的语法外,还支持 ... -
Oracle空值排序——排到前面或后面
2013-08-14 10:58 11191.使用order by 列名 nulls first,将此 ... -
ORA-0131:Insufficient privileges. Note:Debugging requires the DEBUG CONNECT SESS
2013-08-13 16:00 1230使用PL/SQL developer调试procedure时 ... -
Oracle keep index
2013-08-07 19:11 675一个表的主键使用了唯 ... -
查看创建trigger的语句
2013-08-07 19:07 435在PLSQL DEV中没有权限查看TRIGGER时,可以用下 ... -
去掉oracle字段的默认值
2013-08-06 19:59 1708为表的字段添加默认值的语法: alter table ta ... -
记录一次删除Oracle表字段的非空约束
2013-08-06 12:59 2181一个表表结构指定了某个字段(如cno)not null,同时 ... -
plsql批量执行脚本
2013-08-05 10:46 1822如果脚本数量很多,手动执行脚本效率很低,而且如果涉及到多个用 ... -
Oralce自定义函数实现字符串分割
2013-07-22 14:43 8091.定义自定义类型,函数返回自定义类型SQL> cre ... -
oracle和Mysql连接数据库
2010-05-08 08:49 354Mysql方式: import java.sql.C ... -
存储过程动态参数
2011-07-28 15:59 742create or replace procedure t ... -
Oracle标签的使用
2011-07-28 16:01 686在用Code Xpert扫描代码时,提示“Avoid unl ... -
Oracle查找某个字段所在的表
2011-08-31 14:32 596--查找该用户下(其他表如果有访问权限也算)有备注的字段中某 ... -
SYS_GUID()与sequence的比较【转】
2011-09-01 14:27 606文章转载于:http://www.cnblogs.com/B ... -
oracle中的''和null
2011-09-09 15:29 625declare v_new varchar2(20) ... -
MSSQL用批处理执行多个sql脚本
2011-09-10 02:57 512开始->运行->cmd->osql -?可 ... -
Oracle查询字段所在表及字段长度
2011-09-19 14:14 1188--查询包含DNO字段,且字段长度<10的表。 se ... -
Oracle产生随机数
2011-09-19 21:58 4201.随机数: dbms_random.value(1,n) ... -
Log Explorer
2011-10-07 12:15 518今天操作数据库的时候不小心把一个表给Delete操作了 ...
相关推荐
oracle大批量处理数
简单讲解了oracle分区技术-大批量数据操作
在Oracle数据库中,进行大批量数据删除是一项需要注意性能和安全性的任务。常见的方法包括使用DELETE语句、FOR ALL语句,以及通过存储过程实现分批删除。以下将详细阐述这些方法及其优缺点。 首先,最基本的删除...
oracle分区技术-大批量数据操作,优化处理,大数据量的处理
高手的Oracle大批量删除数据的方法.htm
在构建和管理Oracle数据仓库的过程中,对大批量数据的处理是一项关键任务。为了高效地处理大量数据,了解和掌握特定的技术至关重要。以下是一些核心知识点的详细解释: 1. **分区技术**:Oracle数据库提供了一种...
### 从 SQL Server 迁移大批量数据到 Oracle 在 IT 领域,数据库迁移是一项常见的任务,尤其是在企业级应用中。随着业务的发展和技术的进步,企业可能需要将现有的 SQL Server 数据库迁移到 Oracle 数据库。本文将...
oracle 分区技术-大批量数据操作 大数据对象 (表, 索引)被分成小物理段 当分区表建立时,记录基于分区字段值被存储到相应分区。 分区字段值可以修改。(row movement enabled) 分区可以存储在不同的表空间 分区可以...
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
Oracle sqlldr 大批量数据导入工具使用实例,通过Oracle 自带的sqlldr 工具可快速导入大批量的数据至Oracle中。 工具使用前提条件: 1.安装的Oracle Client 不能为精简版,要不然就找不到sqlldr.exe 2.将Oracle的...
Oracle中大批量删除数据的方法 Oracle中大批量删除数据的方法是数据库管理员和开发者们经常面临的挑战之一。当数据库中的数据量非常大时,删除数据的操作可能会变得非常慢,甚至影响到整个数据库的性能。因此,...
Oracle 定时删除数据 并释放空间 ,创建存储过程并使用job完成。
Oracle 大批量导出至txt文件 新建一个命令窗口,执行下面脚本。注意修改目标文件名、表名
Oracle 分区技术是 Oracle 数据库中的一种高级技术,用于解决大批量数据操作问题。该技术可以将大型表或索引分割成小的、独立的物理段,以提高数据的管理和查询效率。 分区技术的优点包括: * 提高查询性能:因为...
- **事务管理**:确保在进行大批量的数据修改时使用适当的事务管理策略,如使用保存点等,以便在出现问题时能够回滚到某个安全状态。 - **错误处理**:编写健壮的错误处理逻辑,确保在遇到异常情况时能够正确处理,...