我正在尝试从另一个表填充表,包括日志记录。
例如,有2个表 A 和 B 。
id
的主键。数据预计约为800 k,有15列。
答案 0 :(得分:3)
我不知道你对“包括日志记录”的意思,但是要从一个表插入/更新到另一个表,请使用merge
:
merge into a
using b on (b.id = a.id)
when matched then update
set col1 = b.col1,
col2 = b.col2
when not matched then insert (id, col1, col2)
values (b.id, b.col1, col2);
这假设PK在两个表中都被命名为id
。
答案 1 :(得分:1)
merge into tableA a
using tableB b
on (a.id = b.id)
when matched then update set
--list columns here
when not matched then insert
--list columns to insert here
;
在一次交易中插入800k不应该太多。如果它太多,你应该使用bulk collect
光标并在几步中拆分合并,只传递部分数据using
。您需要为limit
设置的bulk collect
有多大,以便为最佳时间进行测试。