oracle 怎样同步两张大表数据,用sql语句实现

用sql语句实现同步两张表里面的数据,数据量是千万级的

第1个回答  2012-07-26
1、写个触发器,在a表中insert数据的时候同时在b表中insert。
2、写个存储过程,写两个insert语句,将数据同时insert到a表和b表中,在程序中调用存储过程。
第2个回答  2012-07-26
如果小表指的是第二个表,且两张表结构完全一致,可以按如下方式解决:
insert into tab2 (select * from tab1 minus select * from tab2);追问

两张表的结构不一致

追答

那两张表根据哪些列进行同步?

第3个回答  2012-07-26
oracle的话用trigger就能实现。追问

现在这两张表里面的数据相差几万条,如果是新增数据的话可以用trigger,现在是要把两张表相差的数据同步到小表里面去

追答

2个表的结构是否完全一致呢?
insert into smalltb
(select * from bigtb
minus
select * from smalltb);

追问

不一致

追答

那你把*用一致的字段替换掉,然后减后的记录插入到小表中,还是用上面的sql。

追问

恩,非常感谢

第4个回答  2012-07-26
delete from a;
insert into b select * from a;
第5个回答  2012-07-26
物化视图 或 触发器追问

物化视图怎么实现?

追答

create materialized view log on table1;

CREATE MATERIALIZED VIEW table2
REFRESH FAST START WITH SYSDATE
NEXT SYSDATE + 5/3600/24 --下次刷新的时间,这里是5秒
WITH PRIMARY KEY
AS SELECT * FROM table1; -- 写你自己需要的列

这里第二个表 实际上是物化视图。

不知道你样做是为了实现什么需求

本回答被网友采纳
相似回答