如何批量修改oracle数据库中某一个表中的某一列数据?
发布网友
发布时间:2022-04-26 16:37
我来回答
共7个回答
热心网友
时间:2022-04-07 18:16
最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能). 虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。如果是误操作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新操作:
ps:c,d是需要更新的操作,e,f是条件。必须强调的是id必须是主键
1、构建临时表进行主键关联更新
需求:T1表有千万级别的数据量,需要更新这个表的字段a,b满足2个条件的记录。
做法:一般业务会将条件通过excel表格提供给开发,那么开发首先需要将这个excel表格的内容插入到临时表T2中,考虑到a,b都不是主键,那么需要将a,b转化成主键后再插入到T2表中,T2表中还可以保存更新前的数据,方便做数据回滚,T2表中有数据后,就可以执行下面脚本进行更新操作:
ps:c,d是需要更新的操作,e,f是条件。必须强调的是id必须是主键
热心网友
时间:2022-04-07 19:34
最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能).
虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。
如果是误操作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的机会都没有要好得多。
如果对这些修改真的有信心,而只是从性能考虑,那可以用下面的方法(pk_col 是表的主键):
merge into xxx aa
using (select pk_col from xxx) bb
on (aa.pk_col=bb.pk_col)
when matched then
update set aa.datatype=66 where aa.datatype is null;
热心网友
时间:2022-04-07 21:09
update EAMS_MASTER set state=000 这样就能把001全部修改成000
update EAMS_MASTER set state=000 where 字段=值 修改条件下的值=000(加粗位置是条件)
热心网友
时间:2022-04-07 23:00
update EAMS_MASTER set state = '000' where state = '001' 根据我提供的内容写语句,不要写通用的语句,我会分辨不出哪个对哪个。这句话没有理解追问这句话的意思就是你不能这样写:update 表名 set 列 = '值' where 列 = '值' ,你要把我的数据带进去写,明白了吗?
热心网友
时间:2022-04-08 01:08
update EAMS_MASTER set state = '000' where state = '001' 就是这样呀,我感觉这不是批量修改
热心网友
时间:2022-04-08 03:33
update EAMS_MASTER set state = '000' where state = '001'
热心网友
时间:2022-04-08 09:12
楼上正解、
如何批量修改oracle数据库中某一个表中的某一列数据?
最好的方法是批量修改,即每次修改5000条(一次修改不要超过一万条,否则影响性能). 虽然在11g中,我们也可以选择使用merge命令,但你的这种情况最好先修改一部分然后看看影响,毕竟在生产环境作这样的操作风险很大。如果是误操作,最好还是请DBA来恢复,虽然这样做会被挨骂,但总比错上加错,最后连挨骂的...
怎么实现oracle数据库某个表中某一列中日期的批量修改,而不修改时间...
需要用update语句。如test表中有如下数据:要将begintime改成当前日期时间,可用如下语句:12 update test set begintime=sysdate;commit;更新后结果:
oracle数据库如何用update批量更新某列数据中的字段
Server类似。可以使用编程,或者使用PL/SQL连接Oracle数据库,登陆连接后,使用以下Sql:update table set id='TT'where a='XX';以上语句,就是将表table中列a='XX'的所有id列改为“TT”。条件可以添加多个,更新的字段也可以添加多个,比如:update table set id1='TT',id2='CC'where a='XX'...
oracle如何批量修改字段值?
1、使用以下代码即可同时更新一个表中几个字段的值:updateASET(C1,C2,C3,C4)=(SELECTC1,C2,C3,C4FROMBWHEREID=A.ID)Oracle数据库最新版本为OracleDatabase12c。2、update表名set(字段1,字段2,字段3,...)=(select数值1,数值2,数值3,...)where条件多个字段可以使用逗号隔开,每一个...
ORACLE数据库用PLSQL如何批量更新表里的某个字段的内容为文字加上另外...
可以用以下SQL试试,如果有一对多的情况在b.name=a.name后面加个 and rownum=1:upddate table_a a set a.lname =(select '前缀字符串'||b.lname from table_b b where b.id=a.id and b.name=a.name)
oracle 中 同时修改一个数据库中多个表里面的同一字段的长度
比如你要修改id长度是52 declare v_sql varchar2(1000);cursor cr is select table_name from user_tab_columns where column_name = 'ID';begin for r in cr loop v_sql := 'alter table '||r.table_name||' modify ID VARCHAR2(52)';execute immediate v_sql;end loop;end;...
请教一个关于oracle数据库某个字段批量update的问题!
按你的要求,下面的语句可以解决,没有必要用循环语句。update 表 set 列=9+列-trunc(列,0)where 列>10;update 表 set 列=1+列-trunc(列,0)where 列<1;
批量修改oracle数据库中的某一个字段的值,在该字段的最前面加一个字符...
update table_name SET ID='G'||substr(ID,0);OK!
oracle数据库中有张表,里面某个字段的值为字符串,表中有多条记录,有...
假设A表(c1,c2,c3),其中c2是字符串,则:update a set c2=substr(c2,1,n)其中n表示从c2中取前多少位字符串;
oracle如何通过两个表关联,修改其中一表中某列的数据?
update a set a.e=(select b.h from b where b.g=a.g)where a.g in (select b.g from b)或者 update a set a.e=(select b.h from b where b.g=a.g)where exists (select null from b where b.g=a.g)需要保证a,b表一对一对应关系,如不是不可以这么写 条件那里看需要写...