我现在有一个(多个)oracle数据库服务器在外地(不同的地方)...现在要把通过系统把各个地方的数据收集到集中的一台oracle数据库服务器上.每个月要收集一次..第一次收集还比较容易..第二个月、第三个月后面的数据有变化.我想实现第二个月以后的数据只更改原来修改、新增、删除过的数据。数据表大概有400多张、数据量比较。数据量大的一个数据库一张表有接近1000万的数据.要考虑效率..有没有高手做过这方面的?大家帮我想想办法..坐等回复。
就是数据量比较大..最开始我想通过过程写sql来比较..然后再操作..数据量太大了..耗时太久..还有没有其他办法?
追答首先不知道给的数据是文本的,还是直接从数据库抽过来的。如果单纯只能在数据库里进行操作,这么大数据量,是不现实的。只能按照先插入,再剔重的方法了。
追问直接连接 远程数据库从数据库里把所有表数据抽取过来..
追答那应该会用DBLINK的方式抽吧。你这么多数据,全表抽,每个表几百万的数据,400多张表,没个1,2天抽不完啊。更不用说再加个判断了。
追问我现在想到的只有用dblink的方式抽,你没有其它效率高一点的办法可以抽..1、2天时间..第一次抽取时间上还能接受..第二次、第三次以后的抽取..比较麻烦..
追答如果是送文件的话,处理起来比较快。后面的你本地数据库数据越来越大,处理起来越来越麻烦了。
guid是 什么?是每条数据都有这么一个属性么?每条数据都判断一下...1000万的数据效率会不会很低。
追答可以使用 not in (select ...) 这种批量添加
如果是 更新,使用最新日期判断,有更新日期的不管内容是否改变,都更新一次