
正文
oracle批量更新数据,oracle批量更新字段
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎样批量修改oracle数据库中某一个表中的某一列数据?
1、最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能). 虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。
2、使用以下代码即可同时更新一个表中几个字段的值:updateASET(C1,C2,C3,C4)=(SELECTC1,C2,C3,C4FROMBWHEREID=A.ID)Oracle数据库最新版本为OracleDatabase12c。
3、跟Sql Server类似。可以使用编程,或者使用PL/SQL连接Oracle数据库,登陆连接后,使用以下Sql:update table set id=TT where a=XX;以上语句,就是将表table中列a=XX的所有id列改为“TT”。
4、你可以写一个存储过程来执行,由于数据量大,如果直接更新,数据库UNDO表空间肯定会满,会产生异常。过程如下,给你参考下。
相关问答
Q1: Oracle批量更新在存储过程中执行很慢,但单独执行很快
另外你这种loop写法还不如直接写一个update,反正也没有做到分批提交。
首先,execute immediate v_sql语句需要硬解析,这是一个较为耗时的过程,而直接拿出来执行的语句,其查询分析树已经存在,所以只需要软解析。
简单点理解为update类似行扫描,每一次扫描就做一次子查询,而你的字查询估计是全表扫描,I/O支出比较大,所以比较慢 放入临时表后,减少了扫描量,从而提高了效率。
原因很多,只能具体问题具体分析,一般来说,执行速度慢的原因有:sql语句效率太低 循环次数太多导致慢 数据量过于庞大,导致统计时速度慢等。
解决方案1: 这种比较没什么意义。需要注意的一点是,select 涉及的是共享锁, 在nolock提示下可以保证不死锁。update涉及的是更新锁和排他锁,没有锁 提示可以用,在一定条件下会等待很长时间,甚至死锁。
Q2: oracle数据库如何用update批量更新某列数据中的字段
可以使用编程,或者使用PL/SQL连接Oracle数据库,登陆连接后,使用以下Sql:update table set id=TTwhere a=XX;以上语句,就是将表table中列a=XX的所有id列改为“TT”。
使用单条 SQL 语句更新多个字段:通过一条 SQL 语句同时更新多个字段可以减少数据库服务器和客户端之间的通信量,从而提高性能。
可以通过update方法进行批量修改。sql:update table_name SET age=25;备注:也可以添加必要的条件,针对固定条件的数据进行批量修改。
使用以下代码即可同时更新一个表中几个字段的值:update A SET (C1,C2,C3,C4)=(SELECT C1,C2,C3,C4 FROM B WHERE ID=A.ID)Oracle数据库最新版本为Oracle Database 12c。
看你写的语句里面,不知道是不是随手写的,至少0左右的两个单引号是汉字的单引号,而不是数据库里接受的英文的单引号。然后请确定字段的类型是字符型还是数字型,如果数字型这么写,会报错。
Q3: 在Oracle中怎样用一张表去Update另一张表
update A set A.字段2 = (select B.id from B where A.字段2 = B.字段2) where exists (select 1 from B where B.字段2 = A.字段2)oracle批量更新数据;-- 如果B表字段2有重复,那么会报错oracle批量更新数据:单条语句返回多行。
update emp A,emp2 B set B.comm=A.comm WHERE B.empno=A.empno;update emp2 B set B.comm=(select A.comm emp A where A.empno=B.empno group by A.comm);如果不增加group by,存在重复值会报错。
首先创建测试的原表A。插入原表A测试数据,执行完SQL后,记得点击commit按钮,否则,数据不会持久化到数据库。【创建表结构与数据】此处不需要commit动作。【同字段仅数据】。
updatea set a.province=(select province from b where b.mobile=a.mobile); updatea set a.city=(select cityfrom b where b.mobile=a.mobile); 这种写法效率太低,尤其是号码有上万条的时候,所以抛弃。
Q4: Oracle一次更新多条记录
可以通过update方法进行批量修改。sql:update table_name SET age=25;备注:也可以添加必要的条件,针对固定条件的数据进行批量修改。
构建临时表进行主键关联更新 需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
如果是从其他的表导入那么用insert into+表名(字段)(字段入围全部可以不写)+as select+字段+from+数据来源表名 where+条件;(注意:前后字段顺序一致)如果从外部表导入,那么就没什么问题sqllar导入。
当然是一次更新100条更有效率。你每次更新一条,要与服务器发生两次数据传输.你循环100次就要200次 你一次更新100条,只与服务器发生两次数据传输 当然是更新100次更有效率。前提是小数据量。
update 表名 set id=id-1 where id5就可以了啊。
Q5: ORACLE数据库用PLSQL如何批量更新表里的某个字段的内容为文字加上另外...
在Excel中准备好要导入的数据。具体操作:在Excel中,把第一列设置为空列,第二列以后的列应与要导入的数据表的字段相对应。
如果是根据一个表更新此表,套用如下方式:update [表名] set [字段名] = (select [字段名] from [其他表] where [两表间的关联条件])。
构建临时表进行主键关联更新 需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
将D:\daochu.dmp 中的数据导入 TEST数据库中。imp system/manager@TEST file=d:\daochu.dmp 上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上 ignore=y 就可以了。
所以不建议这样做。如果有需要,可以在导出insert语句的时候分批次commit(提交)。
关于oracle批量更新数据和oracle批量更新字段的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






