汇总是什么意思?如果三个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.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
首先将A、B、C三个数据库连起来,如果不在一个服务器上就创建DBLINK,如果不能创建DBLINK就将A,B,C分别导如不同的用户,总之要在一个用户下可以同时访问这三个数据库。
其次,创建快照关联这三个数据库中的表(如果是多表用程序实现),查询语句为:
SELECT * FROM A UNION(或UNION ALL)
SELECT * FROM B UNION(或UNION ALL)
SELECT * FROM C;
将快照的数据导出。
至于三个不同的数据库根本不是问题。如果能够同时连接三个服务器,我是说你所说的“大服务器”可以通过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 不就什么都解决了。