我现在要从异地的三个不同的数据库(Sql server,Dbase,Fox)中取得数据,然后进行一些分析处理(在我自己的库中),这三个库分别是不同的系统中的,并且这三个系统不能更改。现在我的问题是:1。这三个地方是每次把它们的数库库都传给我呢?还是如何做?(有些库是很大的)2。我接收到他们的库之后,我如何判断那些数据增加了?那些修改了?是不是要一一遍历每一条数据?(量很大,有无提高效率的方法?)?
望各位大侠能出售相助,提出好的建议者,另外开贴给分。

解决方案 »

  1.   

    sql server 自身有一个“分布式事务处理机制”
    可以把数据分发到不同类型的数据库中去
    也可以从不同的数据库中取数
    如果你的网速足够高
    不妨直接利用
      

  2.   

    兄弟这个问题也太困难了,我当时作过类似的处理,不过是在Oracle8.0.5
    中,当时我做得很麻烦,每天晚上要进行当天数据的结算(就是把当天的
    数据考到一各库中中),然后二天晚上就把工作库中的数据和昨天晚上结算
    后的数据通过SQL的集合运算取出不同的(修改或者增加或者被删除)数据
    然后把生成的数据集导成我要的文件!
    不过我这个办法在7*24的应用就没用了!
      

  3.   

    采用midas得clientdataset,使用公文包模式的方案!!建议你去仔细看一下台湾李维的书!
      

  4.   

    现在问题是这样的:已经存在了三个不同的系统,并且用到了三个不同的数据库Sql server,Dbase,Fox。我要开发的的是第四个系统,数据库准备用Sql server。三个系统隔一段时间把它们的数据库给我(网络或者光盘)我如何从这三个数据库中抽取数据?因为我要保证我的库重的数据是最新的(有增加的,修改的等)。我需要遍历这三个库中每一条数据以判断数据有无修改吗?这样话量就太大了。另外说一句:该系统不需要非常好的实时性。
      

  5.   

    放入3个不同的数据库连接不就行了吗!
    我也在两个sql server 上处理数据!
      

  6.   

    如zhang21cnboy(沧桑男人)所说:我这里是不需要修改数据的,基本只需查询。但是如果是每次都重新倒入数据的话,是否有点耗时?因为用到的四个表结构都是不同的。 okgxs(叶风铃1) ain2000(太上老君急急如令)这里的表结构都是不同的呀。
      

  7.   

    首先把三个不同系统的数据放入三个不同的目录中,DABASE和FOX的DBF数据表用TABLE控件连接;SQLSERVER数据库把备份恢复再用BDE或ADO连接;
    然后,把你想做的事(提取相关数据)用DELPHI做好;
    最后,每次把数据收集回来拷入相应路径。
      

  8.   

    to:tongki_8(矛盾与迟钝),每次都要全部更新数据库吗?
    to:zklove(花花公子) 数据肯定是从三个数据库中取得(可以通过网络,或者是盘),本地数据库待定。因为要从中抽取数据,表的个数待定。
      

  9.   

    to fansnaf(投币一元),我看你还是直接往进去弄就可以了!虽然这样耗时,但是如果你使用其它方法的时候,更加耗时,主要问题是你现在面对的三个系统你都不能改动,不然就好办了!  
      

  10.   

    我碰到过类似情况, 在别人的系统基础上写一个新系统, 不能更改别人的库数据, 只能查询
    解决方法是
    除了你自己的数据库连接外, 新建三个数据库连接,分别连到那三个库, 并绑定若干用于查询的Query/ADOQuery写程序时判断三个库的数据就行了, 如果有导入等功能, 用ClientDataSet控件较好
    我以前用的是PB, DataWindow是内存表, 操作很方便。ClientDataSet也是取到内存后关闭数据源的。
      

  11.   

    to:xirumin(吃好喝好),是呀,而且这三个库还是在异地的,每次用他们通过 网路将它们的整个原始数据库上传码?安全性如何考虑?
    to: zhang21cnboy(沧桑男人)这三个库的差异性是很大的,如何提高效率?
      

  12.   

    是否能用Sql Server的DTS自动地,定期地将上传的数据库倒入我建的库中呢?数据是追加?还是覆盖?因为上穿的数据库是原始的库,所以我需要是每次覆盖,能实现么?
      

  13.   

    建议用DTS来转换然后做一个数据库来缓冲。
    再查询。。呵呵。。是有够土的啦。。
      

  14.   

    同意 kuangning(郎之间)。
    典型的三层结构。
      

  15.   

    需要校验数据的话可以在本地校验,校验完生成SQL(insert和update),上传的数据只是SQL语句。
    我没做过,因为没环境和时间,但我想是可以的。
      

  16.   

    解释一下如何本地校验?
    上传成功后,备份一次数据。下次上传前校验。也可以不用本地校验,直接用batchmove控件试试,可能更好。还是那句话,我没试过,都是凭想象,没时间实践。羡慕你们有那么多项目做。
      

  17.   

    如果不按照我上面说的,外加程序模块的方式,而且也不动数据库。根本无法实现
    就算你通过其他方式来取数据,类似与DTS什么的。但是你能解决所有类型的数据系统吗?或者用直接到其他系统查询数据的方式,你又能保证对其他系统的性能没有影响吗?几百万的数据,对原有系统本身就是很大的数据了。加上你还要在这几百万(或者更多)的数据中抽取一些数据,肯定会大大降低原有系统的性能。可以采用的办法,最好就是原有系统加上上报接口,这样可以大大的降低对原有系统的影响。
      

  18.   

    同意kuangning(郎之间),我觉得这里面有一个问题要考虑:
    三方的数据上传到服务器后是以什么方式存储这些数据,数据库?文件?
    这步的工作是怎么做的?为什么不在这个步骤里面就把你的库直接更新了呢。
    既然对实时性要求不是很高。我认为直接覆盖掉前一次的数据是最高效的方法
      

  19.   

    是从三方的数据库服务器上传的,然后放在我的服务器上。
    数据库?表?这是要讨论的一个问题。
    上传是通过B/S作了一个简单的上传,到一个文件夹中,是以文件的方式保存的。然后我通过C/S结构作一个数据的倒入工作。问:这样做是否合理?欢迎讨论,并参考楼上个位大侠的意见和建议。多谢!·!
      

  20.   

    如果表是文件形式的直接覆盖就行了,如果是SQL SERVER就要做上传模块,先备份,后恢复,当然也可以用BatchMove控件试试。
      

  21.   

    我现在决定选择直接覆盖了。
    但是还有问题:sql server中如何只是把其中的某些表导出为一个文件?就像是把整个数据库备份为一个文件一样?用DTS好像不行呀,只能在两个sql server库中用DTS互相导。是如何进行的呀?
      

  22.   

    sql server中如何只是把其中的某些表导出为一个文件?up
    up
      

  23.   

    sql server中如何只是把其中的某些表导出为一个文件?
    或者说是每个表各自为文件?
      

  24.   

    我同意:tongki_8(矛盾与迟钝)的看法
      

  25.   

    sql server中如何只是把其中的某些表导出为一个文件?
    或者说是每个表各自为文件?
      

  26.   

    感谢楼上的,但是问题是这些数据库都是异地的。现在我想采用的方法是:把这些数据库中的需要的部份考过来(网络等),然后进行处理。有一个问题:如何对sql server中的某几个表作数据的导出工作?导出为单个的文件,然后我在我的数据库中还原。就像把整个数据库备份为一个bak文件一样?sql server可以把某些表的数据导出吗?或者说有什么办法?
      

  27.   

    将一个表中 的数据导出成SQL脚本有很多的方法。关于数据导入,我会选者:
    1、各个系统上报的数据采用统一的数据格式
    2、各个系统的上报采用FTP或则其他方式
    3、将上传的文件导入一个临时表
    4、在临时表中建立触发器可以看出你在做决策分析方面的东西,我门也做这个,我做的数据采集就是这样的
      

  28.   

    很简单:
    1。设置三个odbc数据源;
    2。写个工具,对数据源中的数据逐条处理;
      

  29.   

    同意: lxl(蚊蚊) 
      

  30.   

    up,mm没有接触过这个方面的问题!