求助,要同步两个表记录的脚本
本人初玩ORACLE只会简单的SELECT INSERT
今天要做一个同步的脚本求助各位高手
有三个表 T1 T2 T3 字段一样,结构相同
T1,T2已有记录,T3是空表
要求:用T1的记录INSERT到T2 如果T2没有这条记录就直接插入,如果T2已经有这条记录,就先把T2的记录INSERT到T3,然后删除T2的这条记录,再用T1的记录INSERT到T2。 T1记录的条数大约有100W 请各位大神帮忙啊。。
------解决方案--------------------create or replace procedure test
as
cursor var_c1 is select * from A1;
cursor var_c2 is select * from A2;
begin
for temp1 in var_c1 loop
for temp2 in var_c2 loop
if temp1.aid = temp2.aid then
insert into A3(aid,aname,age) values(temp2.aid,temp2.aname,temp2.age);
delete A2 a2 where a2.aid = temp2.aid;
insert into A2(aid,aname,age) values(temp1.aid,temp1.aname,temp1.age);
end if;
end loop;
end loop;
end;
不知道是不是你想要的
------解决方案--------------------个人感觉用SQL语句完成比较简单,首先把T1、T2重复的插入到T3中,
INSERT INTO t3(id,column1,column2) SELECT t2.id,t2.coulmn1,t2.coulmn2 FROM t2,t1 WHERE t2.id=t1.id
之后就有两种情况,如果t1与t2重复记录较多,那就根据t1更新t2,否则就把重复的给删掉,然后t1全部插入t2.代码分别是:
UPDATE t2 SET(id,column1,column2)=(SELECT t2.id,t2.coulmn1,t2.coulmn2 FROM t2,t1 WHERE t2.id=t1.id);
DELETE t2 WHERE exists(SELECT 1 FROM t1 WHERE t1.id=t2.id)
最后就是插入了,如果第二步是删除,那就简单了
INSERT INTO t2(id,column1,column2) SELECT t2.id,t2.coulmn1,t2.coulmn2 FROM t1
如果第二步是更新,那也简单
INSERT INTO t2(id,column1,column2) SELECT t2.id,t2.coulmn1,t2.coulmn2 FROM t1 WHERE not exists(SELECT 1 FROM t1 WHERE t1.id=t2.id)