Oracle数据库更新大批量数据案例
发表于:2024-09-26 作者:千家信息网编辑
千家信息网最后更新 2024年09月26日,更新大批量数据的背景:用户需要将VIP的微信标识,传给用户的ERP会员档案中,已知存量数据约50W行数据,线下的微信标识数据我们开发提供了openid和erpid的csv文件,erpid和线下的会员档
千家信息网最后更新 2024年09月26日Oracle数据库更新大批量数据案例
更新大批量数据的背景:
用户需要将VIP的微信标识,传给用户的ERP会员档案中,已知存量数据约50W行数据,线下的微信标识数据我们开发提供了openid和erpid的csv文件,erpid和线下的会员档案id对应,需要将openid也更新到会员档案里。
更新数量大致分为两大步骤
一、将我们要更新的数据源导入数据库内,需要创建临时表,将数据传入临时表
二、写游标,将临时表内的数据与需要更新的数据进行更新
1.将csv文件里面的数据导入数据库临时表中,先创建临时表
create table vip_openid(erpid number(10), openid varchar(200))
2.临时表创建后,将cvs文件里的数据导入表中,在这里我们选择工具>文本导入器
选择要导入的csv文件,注意csv文件的表字段和数据库表字段对应
选择文件后在界面将会预览导入的数据
3.点击到oracle的数据,选择导入的表,先选择用户名,用户名下的表名,然后选择表与csv文件表字段对应关系,我们选择导入,可以看到提示导入完成。
4.接下来就是对会员表和临时表的数据关联更新,我们先使用直接update方式进行更新试验,该方法只更新5W数据,耗时12分钟左右:
于是参考百度文档建议,写了一个游标如下
declare cursor cur is--声明游标cur select B.openid,A.ID ROW_ID FROM C_CLIENT_VIP A ,VIP_OPENID B WHERE A.ID=B.ERPID ORDER BY A.ID;--从A和B表中找到ID对应的openid,并对游标内数组排序 V_COUNTER NUMBER;--声明一个number类型的变量BEGIN V_VOUNTER:=0;--初始化变量值为0 FOR ROW IN CUR LOOP--遍历游标 UPDATE C_CLIENT_VIP A SET A.OPENID=ROW.OPENID WHERE A.ID=ROW_ID; V_COUNTER:=V_COUNTER+1;--每次循环变量值+1 IF(V_COUNTER>=1000) THEN COMMIT; V_COUNTER:=0;--每更新1000行,V_COUNTER值为1000时候,就提交给数据库 提交后将变量归零,继续下一个1000行更新 END IF; END LOOP; COMMIT;END;
大概48W行数据,43秒即更新完毕。
使用以上方式注意一点,因为数据库会员表的ID有索引,所以使用游标速率很快。如我们的多表关联字段没有索引,使用此方式可能效果不是很明显。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
数据
更新
文件
选择
游标
数据库
会员
字段
用户
会员档案
内容
方式
档案
变量
就是
索引
量值
信标
关联
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北民主评议软件开发哪儿好
服务器和oss区别
数据库保证完整性
网络安全和舆情安全主题班会
数据库表中的行
软件开发需要结转成本
数据库怎么筛选客户
杭州乐刻网络技术有限公司股票
软件测试笔试题数据库查询
计算机软件开发和维护
联合国贸易委员数据库
非你莫属综艺网络安全求职
如何破解服务器接口
贵州好佣互联网科技有限公司
妈妈家科技互联网有限公司
南阳市金钻网络技术
大城市网络技术
dns服务器2013
游戏软件开发怎么联系
网络安全管理专项检查报告
2020年国安网络安全周
神话民间网络安全培训班
上海工控软件开发哪家专业
鼎新软件开发有限公司
惠普服务器开机显示pxe
昭通网络安全咨询
数据库同步工具开源kettle
登录windows服务器
公安部招聘网络安全师
服务器处理器怎么看几核