在oracle 10g 中怎样从一个视图中定时的把新数据添加到一个表中?

时间:2021-03-06 00:28:10
各位好:

oracle中新建了一个表 n_table,n_table的数据是从视图中得到的。

现想每三天或者每星期定时从视图中把新的数据插入到n_table中,n_table中已经存在的数据不变,

其中n_table中有一个Primary为 abc_id。

5 个解决方案

#1


abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);
要是时间有标识,像三天或每周的定时期限,可以直接根据时间段来做插入。类似:
insert into n_table select * from view where time>=trunc(sysdate)-3 and time < trunc(sysdate);

具体看你的数据上的规律,希望对你有帮助。

#2


Quote: 引用 1 楼 music_mouse 的回复:

abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);

用你提供的这种方法,怎样做一个job,定时每周自动做一次,怎样做呢?

#3


引用 2 楼 xianggelia 的回复:
Quote: 引用 1 楼 music_mouse 的回复:
abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);

用你提供的这种方法,怎样做一个job,定时每周自动做一次,怎样做呢?……

DBMS_JOB

#4


在oracle 10g 中怎样从一个视图中定时的把新数据添加到一个表中?

这里面怎样填?

#5


多谢各位,找出问题了。

#1


abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);
要是时间有标识,像三天或每周的定时期限,可以直接根据时间段来做插入。类似:
insert into n_table select * from view where time>=trunc(sysdate)-3 and time < trunc(sysdate);

具体看你的数据上的规律,希望对你有帮助。

#2


Quote: 引用 1 楼 music_mouse 的回复:

abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);

用你提供的这种方法,怎样做一个job,定时每周自动做一次,怎样做呢?

#3


引用 2 楼 xianggelia 的回复:
Quote: 引用 1 楼 music_mouse 的回复:
abc_id应该也是来自视图吧。。如果id是自增有规律,可以直接:
insert into n_table select * from view where abc_id>(select max(id) from n_table);

用你提供的这种方法,怎样做一个job,定时每周自动做一次,怎样做呢?……

DBMS_JOB

#4


在oracle 10g 中怎样从一个视图中定时的把新数据添加到一个表中?

这里面怎样填?

#5


多谢各位,找出问题了。