今天同事问我一个问题:他需要每天将tableA中指定条件下的数据copy到tableB中,并删除tableB中已被copy的数据,应该用什么方法高效一些?听到这个方法之后第一反映就是想到在我上家公司的时候,也做了同样的数据备份工作,不过当时脚本是我老大写的,我只是看了一眼,大概是将需要备份的数据查询出来,在循环结果集逐条将数据移走,为了减少数据压力,并每处理500记录之后commit一次。当时只是看了这种想法,也没多想这种写法用到了什么,结果也只是告诉同事这样一个思路。
现在回来咨询了下度娘,终于找到了原来使用的是游标(这里使用的是Oracle,当然游标在DB2,Mysql等数据库中也是可以使用的)
现在简单举例利用游标进行数据备份(移动)
背景:
表A
testA(
id int,
name varchar2(20)
)
表B
testB(
id int,
name varchar2(20)
)
第一种游标使用方法
declare
--类型定义
cursor c_job
is
select id,name
from testa;