有关处理数据的Oracle PL / SQL查询

时间:2015-02-25 10:32:45

标签: sql oracle

我有一个有超过100万条记录的实时制作表。现在,我不需要在此表上篡改任何内容,并希望创建另一个表,该表从此实时生产表中获取所有记录。我会安排一个可以从我的主表中获取条目并将它们插入我的新表的作业。但我不想每天都记录所有的记录;我只需要在生产表中每天添加的记录添加到我的新表中。 请建议更快更有效的方法。

2 个答案:

答案 0 :(得分:1)

你可以使用INSERT / UPDATE / DELETE触发器将INSERTED / UPDATED / DELETED行发送到新表,但这感觉就像在最基本的层次上重新发明轮子一样。

您可以使用异步复制而不是自己动手,这可能更安全,更具可持续性和可扩展性。您可以根据需要向复制源添加任意数量的表。

答案 1 :(得分:1)

将现有表中的一百万条记录复制到一个新表中不应该花费很长时间 - 甚至可能比找出要复制的记录要快。你可以这样做:

truncate table copytable;

insert into copytable
     select *
     from productiontable;

请注意,您应该在执行insert时明确列出列。

您还可以轻松添加新记录 - 假设您在生产表上有某种形式的id,例如序列分配的id。然后你可以这样做:

insert into copytable
    select *
    from productiontable p
    where p.id > (select max(id) from copytable);