汇总是什么意思?如果三个user的数据不冲突,
你可以这样做:
1.create userD in Database D
2.Export from UserA in Database A
3.Import to UserD in usermode
4.Export from UserB in Database B
5.Import to UserD in usermode with ignore = Y
6.Export from UserC in Database C
7.Import to UserD in usermode with ignore = Y

解决方案 »

  1.   

    楼上的办法还可以。你也可以这样:
      首先将A、B、C三个数据库连起来,如果不在一个服务器上就创建DBLINK,如果不能创建DBLINK就将A,B,C分别导如不同的用户,总之要在一个用户下可以同时访问这三个数据库。
     其次,创建快照关联这三个数据库中的表(如果是多表用程序实现),查询语句为:
      SELECT * FROM A UNION(或UNION ALL)
      SELECT * FROM B UNION(或UNION ALL)
      SELECT * FROM C;
     将快照的数据导出。
      

  2.   

    export syntax:exp username/password owner=userA file=exportA.datimport syntax:imp user/password fromuser=userA TOUSER=UserD IGNORE=Y file=exportA.dat
      

  3.   

    qiuyang_wang(小数点) 我指的是三个不同的服务器上。表的结构完全相同,用户也一样。处于不同的地区,库中有二十多张表。我要实现能够选择其中的八张表,把其数据导出,至于导出几个文件不重要,关键是要还能全部汇总到大服务器上。不知道还有没有没看懂的地方,只管问清楚,我会细心解答在线等....
      

  4.   

    我建议你不要用exp/imp,导成文本算了
      

  5.   

    maohaisheng(你是说让我用写个程序来把数据导为txt文件吗?然后再用sql load 把数据导入吗?我以前就是这么做的,太麻烦了。而且数据量大时,软件会报错,说是内存溢出,我用的是PB8.0
      

  6.   

    你要的不就是数据合并吗?用最简单的INSERT INTO ...SELECT .. FROM .. 就可以。
    至于三个不同的数据库根本不是问题。如果能够同时连接三个服务器,我是说你所说的“大服务器”可以通过DBLINK与其它服务器相连的话,就可以直接导入。
     假如连接A,B,C服务器的DBLINK分别为:DBLa ,DBLb , DBLc
      则可以在“大服务器”上执行这样的语句:
      Insert into 目标表名称 (Select * from 原表名称@DBLa union
                             Select * from 原表名称@DBLb union
                             Select * from 原表名称@DBLc );
      如果还没有创建表,可以直接用Create Table命令创建数据库表。
      如果已经存在目标表了,而且有数据,可以先删掉数据,然后再执行上面语句。如果不可以删除,则要判断是否存在,然后再执行INSERT IN命令。
      如果你的“大服务器”上只为了查询,统计等,可以直接使用快照(物理视图)来实现。  当然上面所说的是可以直接连接三个服务器,如果不能直接连接呢?
      灵活变通一下不就行了,你可以将三个服务器上导出的DMP分别导入到“大服务器”上不同用户下或导入一个“大服务器”可以直接访问的服务器上,再执行:INSERT IN 不就什么都解决了。