如何在oracle中将delta记录从一个表传输到另一个表

时间:2016-05-02 06:59:25

标签: oracle

我有一个table t1属性

emp_joined_date,
emp_name,
emp_number.

我希望将此表格转移到另一个表格t2(having same structure)

在第一次尝试期间,我将转移整个表格,但之后我只想从表格delta records转移t1 to t2

所以如何在单个查询中(在oracle中)从表t1到t2插入多个记录

2 个答案:

答案 0 :(得分:0)

这个怎么样:

insert into t1
select * from t2
where emp_number not in 
(select t2.emp_number from t2 join t1 on t1.emp_number = t2.emp_number) ;

答案 1 :(得分:0)

如果您在t1中获得了新记录,并且只想在t2中插入这些记录,请使用此记录。它会为您提供新的emp_number

insert into t2 (emp_joined_date,emp_name,emp_number)
select t1.emp_joined_date,t1.emp_name,t1.emp_number 
from t1 left join t2
on t1.emp_number=t2.emp_number
where t2.emp_number is null

如果要根据时间插入记录,请使用此方法 使用NVL功能,所以对于第一次运行,它会复制一切。

insert into t2 (emp_joined_date,emp_name,emp_number)
select emp_joined_date,emp_name,emp_number from t1 
where emp_joined_date > 
nvl((select max(emp_joined_date) from t1),to_date('1900-01-01','YYYY-MM-DD'))