轉自:http://jetway.javaeye.com/blog/128760使用DB2聯合資料庫,您可以使用一條SQL語句查詢多個資料來源中的資料。奇妙的是,這些資料來源可以多種多樣:即可以是多種關聯式資料庫系統,也可以是非關聯式資料庫系統,比如Microsoft Excel
、xml等。本文將首先探討多個關聯式資料庫之間的聯合訪問。
我們不如先來動手配置一個簡單的聯合資料庫執行個體來培養一下您的成就感,這樣可以為您理解聯合資料庫所設計的概念及繁多的參數選項增加一點信心。我一向喜歡這種文章風格,我相信很多人也會喜歡的。
要進行下面的實驗,您必須先安裝DB2 v8.2 ESE (Enterprise Server Edition) for Windows。DB2的安裝不是本文的討論範圍。
假如您的DB2已經安裝好了,那就開始吧。
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資料庫中的表或視圖建立暱稱來訪問他們,很好玩吧。:)