在db2中两个数据库之间的两个表的联合查询
⼤家好,今天遇到了在db2中两个数据库之间的两个表的联合查询
我知道oracle中有dblink,可是不知到db2的两个数据库联合查询怎么处理
我了类似于
⽐如两个数据库: db1,db2
⽤户名
密码
select * from db1.⽤户名.密码,db2.⽤户名.密码 where db1.NM=db2.NM
可是这样不好⽤啊
请各位帮忙谢谢
DB2有联邦数据库的,你可以查⼀下。
1.要看⽬录数据库请⽤:
db2 list db directory
这些信息应该是放系统表中.(既不是什么注册表.也不是什么⽂件,具体请查.我也不清楚(类⽐oracle 猜的)).
db2 有联合数据库:(如果不同数据库记得装驱动都是db2就不⽤了.)
使⽤DB2联合数据库,您可以使⽤⼀条SQL语句查询多个数据源中的数据。奇妙的是,这些数据源可以多种多样:即可以是多种关系数据库系统,也可以是⾮关系数据库系统,
⽐如Microsoft Excel
、xml等。本⽂将⾸先探讨多个关系数据库之间的联合访问。
我们不如先来动⼿配置⼀个简单的联合数据库实例来培养⼀下您的成就感,这样可以为您理解联合数据库所设计的概念及繁多的参数选项增加⼀点信⼼。我⼀向喜欢这种⽂章风
格,我相信很多⼈也会喜欢的。
要进⾏下⾯的试验,您必须先安装DB2 v8.2 ESE (Enterprise Server Edition) for Windows。DB2的安装不是本⽂的讨论范围。
假如您的DB2已经安装好了,那就开始吧。oracle数据库怎么查询表
1) 使⽤windows管理员权限的⽤户登陆windows,笔者⽤的是Administrator。
2) 为了完成下⾯的演⽰,您还需要另外⼀个windows⽤户,笔者使⽤安装DB2的时候⾃动创建的db2admin⽤户。您当然也可以使⽤其他windows⽤户。
3) 确保您已经创建了⾄少⼀个可⽤的实例。笔者使⽤缺省创建的DB2实例。您可以通过在命令窗⼝运⾏DB2START命令来启动这个实例
4) 在DB2命令窗⼝运⾏DB2 GET DBM CFG 来查看当前实例的配置参数,并确保FEDERATED参数设置为YES,您可以通过运⾏
DB2 UPDATE DBM CFG USING FEDERATED YES来设置这个参数。修改这个参数后,必须重新启动实例才会⽣效(DB2STOP/DB2START)
5) 却保您已经创建了DB2样本数据库SAMPLE,如果您还没有创建,可以通过在DB2命令⾏窗⼝运⾏db2sampl命令来创建它。此样本数据库包含了⼀些样本表和数据,使⽤这个
数据库作演⽰可以使我们节省⼀点时间。
6) 创建另外⼀个数据库,笔者使⽤名字TESTDB:
DB2 CREATE DB TESTDB
7) 运⾏DB2CE命令打开DB2命令编辑器,并在这⼉完成下⾯的步骤。
8) 连接到sample数据库,并创建DRDA包装器(WRAPPER).
CONNECT TO SAMPLE;
CREATE WRAPPER DRDA;
9) 创建服务器(SERVER)
CREATE SERVER TESTDB TYPE DB2/UDB VERSION '8.2' WRAPPER "DRDA" AUTHID "db2admin" PASSWORD "db2admin" OPTIONS( ADD DBNAME 'TESTDB', PASSWORD 'Y');
10) 创建⽤户映射
CREATE USER MAPPING FOR "ADMINISTRATOR" SERVER "TESTDB" OPTIONS ( ADD REMOTE_AUTHID 'db2admin', ADD  REMOTE_PASSWORD 'db2admin') ;
11) 使⽤db2admin⽤户连接到TESTDB数据库、创建表WORKITEM、并插⼊样本数据。
CONNECT TO TESTDB USER db2admin USING db2admin;
CREATE TABLE WORKITEM (
ITEMNO CHAR(4) NOT NULL,
ITEMNAME VARCHAR(50) NOT NULL,
EMPNO CHAR(6),
PRIMARY KEY (ITEMNO)
);
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0001','测试程序模块1','000010');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0002','完成模块2的开发','000020');
INSERT INTO WORKITEM(ITEMNO,ITEMNAME,EMPNO) VALUES ('0003','联系客户A','000030');
12) 连接到SAMPLE数据库,并为TESTDB数据库中的WORKITEM表创建昵称:
CONNECT TO SAMPLE;
CREATE NICKNAME ADMINISTRATOR.WORKITEM FOR TESTDB.DB2ADMIN.WORKITEM;
13) OK,现在我们就可以在SAMPLE数据库中使⽤TESTDB数据库中的WORKITEM表了,⽽且还可以和SAMPLE数据库的EMPLOYEE表联合查询:
SELECT * FROM WORKITEM;
我们来查询由谁来负责哪个⼯作项⽬:
SELECT A.ITEMNO,A.ITEMNAME,A.EMPNO,B.FIRSTNME,B.LASTNAME FROM WORKITEM A LEFT OUTER JOIN EMPLOYEE B ON A.EMPNO=B.EMPNO;
到此为⽌,SAMPLE数据库就已经变成了联合数据库,您通过在SAMPLE数据库中为TESTDB数据库中的表或视图创建昵称来访问他们,很好玩吧。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。