ITPub博客

首页 > 数据库 > Oracle > 每天的业务数据增量导入oracle库方法讨论

每天的业务数据增量导入oracle库方法讨论

原创 Oracle 作者:fengxue 时间:2007-01-13 23:38:08 0 删除 编辑

咨询各位高人.

目前状况是 我单位每天都要产生 一个单品资料的基础表,

是所有单品,大约5万条数据

,但是每天这个表都有多少改变,比如:有些单品更新,有一些删除掉

了.这个表每天都是通过unix上系统上下载下来.

这个表是个基础表,每天所有的交易,都是在这个表基础上的.

我已经把它导入到oracle中,但是,如果每天都在oracle中全表导入一个的话,数据量有点大了.

我想问,能不能做到这样:
每天,增量导入(增加的数据导入oralce,删除了的数据就把oracle中的
对应表中单品删除,有更新的就更新).然后做了修改的数据建立一个备份的表,只存取有改动数据.

如果用vb写程序是可以做到,但是确实太麻烦了.
oracle数据库有没有这种etl的功能或者方法?

merge into 可以实现更新和增量插入,但是,删除了的数据怎么办呢?
如果将来,要查询历史销售的时候,需要历史的单品资料做关联.
请问有没有好的解决办法呢?

请达人教导一下.或者大家有什么想法可以讨论下.

oracle里的表和基表比较,有更新的就插入另一个新表做备份,没有的就从基表中删除,然后在再MERGE。
这样有点问题:每天备份的数据都在一个表里还是每天新创建一个表?要是都在一个表里会不会出现主键重复而备份不了?

我感觉materialized view可以。不知道你用过没有?

目前有几种思路:
1.用2楼的思路,先比较,然后把删除了的数据备份到其他表,然后,再把每天的基本表和前天的基本表对照,然后merge into...我也有点倾向这么做,但是问题是,9i不支持merge into 的删除,只有10g才支持.-__-||
2.materialized view .但是没有实际做过,而且以前都是看的英文文档,有点痛苦.准备重新去看下再设计.
3.如5楼说的触发器..但是,现在情况是,前一天基本表和当天的基本表的对照,触发器不好解决吧?
比如.a 表已经存在oralce了,今天产生了一个a1表,来源是unix主机的文本.a1表中有95%和a表一样.实际都是基本表,只是日期不同.5楼兄弟有什么好的触发器机制吗?
4.timestamp的机制.(我感觉反而有点麻烦)
5.oracle cdc包来抽取(更麻烦)
我先看看先实现1和2方法吧.

大家有好的想法,具体情况,都可以拿出来讨论下...毕竟是生产中的实际例子,比看书强啊

[@more@]

咨询各位高人.

目前状况是 我单位每天都要产生 一个单品资料的基础表,

是所有单品,大约5万条数据

,但是每天这个表都有多少改变,比如:有些单品更新,有一些删除掉

了.这个表每天都是通过unix上系统上下载下来.

这个表是个基础表,每天所有的交易,都是在这个表基础上的.

我已经把它导入到oracle中,但是,如果每天都在oracle中全表导入一个的话,数据量有点大了.

我想问,能不能做到这样:
每天,增量导入(增加的数据导入oralce,删除了的数据就把oracle中的
对应表中单品删除,有更新的就更新).然后做了修改的数据建立一个备份的表,只存取有改动数据.

如果用vb写程序是可以做到,但是确实太麻烦了.
oracle数据库有没有这种etl的功能或者方法?

merge into 可以实现更新和增量插入,但是,删除了的数据怎么办呢?
如果将来,要查询历史销售的时候,需要历史的单品资料做关联.
请问有没有好的解决办法呢?

请达人教导一下.或者大家有什么想法可以讨论下.

oracle里的表和基表比较,有更新的就插入另一个新表做备份,没有的就从基表中删除,然后在再MERGE。
这样有点问题:每天备份的数据都在一个表里还是每天新创建一个表?要是都在一个表里会不会出现主键重复而备份不了?

我感觉materialized view可以。不知道你用过没有?

目前有几种思路:
1.用2楼的思路,先比较,然后把删除了的数据备份到其他表,然后,再把每天的基本表和前天的基本表对照,然后merge into...我也有点倾向这么做,但是问题是,9i不支持merge into 的删除,只有10g才支持.-__-||
2.materialized view .但是没有实际做过,而且以前都是看的英文文档,有点痛苦.准备重新去看下再设计.
3.如5楼说的触发器..但是,现在情况是,前一天基本表和当天的基本表的对照,触发器不好解决吧?
比如.a 表已经存在oralce了,今天产生了一个a1表,来源是unix主机的文本.a1表中有95%和a表一样.实际都是基本表,只是日期不同.5楼兄弟有什么好的触发器机制吗?
4.timestamp的机制.(我感觉反而有点麻烦)
5.oracle cdc包来抽取(更麻烦)
我先看看先实现1和2方法吧.

大家有好的想法,具体情况,都可以拿出来讨论下...毕竟是生产中的实际例子,比看书强啊

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/19622/viewspace-890211/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    4
  • 访问量
    3520