[英]How to transfer delta records from one table to another in oracle
I have one table t1
with attributes 我有一个带有属性的table t1
emp_joined_date,
emp_name,
emp_number.
and I want to transfer this table to another table t2(having same structure)
. 我想将此表转移到另一个表t2(having same structure)
。
during 1st attempt I will transfer whole table but later I want to transfer only delta records
from table t1 to t2
. 在第一次尝试期间,我将转移整个表,但是稍后我只想将delta records
从表t1 to t2
。
So how do I insert multiple records from table t1 to t2 in single query(in oracle) 那么如何在单个查询中从表t1到t2插入多个记录(在oracle中)
What about this: 那这个呢:
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) ;
If you get new records in t1
and you want to insert only those in t2
, then use this. 如果您在t1
获得了新记录,并且只想在t2
插入那些记录,则可以使用它。 It will give you new emp_number
它会给你新的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
If you want to insert records based on time, then use this Use NVL function so for the first run, it would copy everything. 如果要基于时间插入记录,请使用此Use 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'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.