DB2中每次插入一行數據會花費很長時間,尤其是對於有數千職員或數百萬次客戶交易的大公司。導入和裝載實用程序可以簡化這個任務。另外,有時候需要將數據從表中取出,並放進數據文件供進一步分析和處理。導出實用程序在這種情況下是有幫助的。導入、裝載和導出數據實用程序還可以用來將數據從一個表轉移到另一個表,或者從一個數據庫轉移到另一個數據庫。
在以下練習中,將導入來自一個硬盤文件的數據,然後將數據從表中導出到另一個文件中。然後,將使用裝載實用程序用一個文件中存儲的數據填充一個表。
盡管導入、裝載和導出實用程序有許多選項,但是本練習只關注以下選項:
對於這些實用程序的完整描述,請參考 DB2 Data Movement Utilities Guide and Reference。
1、使用導入填充 HWLD.AUTHOR 表。在 Control Center 中,右擊 AUTHOR 表並選擇 Import。
按照下圖選擇選項:
圖1. 導入表 —— Author
2、在這裡,讓 DB2 使用文件 author.del(下載 部分提供的 zip 文件中包含這個文件)填充 HWLD.AUTHOR 表。與導入相關的消息會放入消息文件 C:\DB2\hellowld\import.msg。
3、在 Columns 選項卡上,輸入尋找 XML 列所用的路徑。
圖2. 導入表 —— Author
可以點擊 Show Command 查看完整的導入語句,如果需要,還可以保存這個語句。應該會返回消息 DB20000,這表示一切正常。
4、使用裝載命令填充 HWLD.MODULE 表。右擊 MODULE 表並選擇 Load。
5、在 Load 向導中選擇 Append data to table。點擊 Next。
6、找到文件 module.del,從而提供輸入文件的完整路徑和文件名,然後指定消息文件。
圖3. Load 向導 —— 文件
7、點擊 Summary。可以查看並保存裝載語句,以便在命令行上運行。如果點擊 Finish,這個命令應該會成功執行,會看到顯示 DB20000 消息的消息窗口。
8、驗證數據完整性並查詢數據。
9、因為 Module 表定義了完整性約束,所以在運行裝載實用程序之後,必須驗證完整性,否則不能訪問這個表。為此,從 Command Editor 運行 SET INTEGRITY 語句。設置完整性檢查會確保每一行都滿足約束條件,並刪除任何不滿足條件的行。
10、選擇 MODULE 表並點擊 Query。
圖4. 查詢 HWLD.MODULE 表
運行了這個表的默認語句 SELECT *。
11、在選擇語句之前,添加以下 SET INTEGRITY 語句:
------------------------------ Commands Entered ----------------------------- set integrity for hwld.module immediate checked; SELECT * FROM HWLD.MODULE; ----------------------------------------------------------------------------- set integrity for hwld.module immediate checked DB20000I The SQL command completed successfully. SELECT * FROM HWLD.MODULE MODULE_ID MODULE_NAME ----------- -------------------- 1 DB2 UDB 2 WebSphere 3 Tivoli 4 Eclipse 5 Rational 6 Lotus Notes 7 Web Commerce 7 record(s) selected.
12、裝載 HWLD.PARTICIPANT 表。在 Control Center 中,右擊 PARTICIPANT 表並選擇 Load。按照圖 34 選擇裝載選項,這與對 HWLD.MODULE 表的操作相似。文件 participant.del 也包含在 下載 部分提供的 zip 文件中。
圖4. Load 向導
13、同樣,因為 Participant 表定義了引用約束,裝載操作會使它進入檢查未決狀態,所以在驗證所有行之前不能訪問它。
14、點擊 PARTICIPANT 表並選擇 Query。在選擇語句之前,輸入 SET INTEGRITY 語句。修改選擇語句,讓它只選擇 ID 為 4 的參與者的參與者名稱、ID 和測試分數:
------------------------------ Commands Entered ----------------------------- set integrity for hwld.participant immediate checked; SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4; ----------------------------------------------------------------------------- set integrity for hwld.participant immediate checked DB20000I The SQL command completed successfully. SELECT PAR_NAME, PAR_ID, PAR_TEST_SCORE FROM HWLD.PARTICIPANT where PAR_ID=4 PAR_NAME PAR_ID PAR_TEST_SCORE ----------------------------------------- -------------------- -------------- mike 4 60 mike 4 80 2 record(s) selected.
15、既然已經填充了表,就該將數據導出到數據文件了。為了選擇要導出數據的表,右擊 AUTHOR 表並選擇 Export。以下窗口打開:
圖5. 導出表
16、按照上圖所示輸入必要的信息。在 Columns 選項卡上,選擇將每個 XML 文件放在單獨的文件中。可以點擊 Show Command 查看並保存命令,供以後在命令行上使用。
應該會看到 DB20000,這表示一切正常。
17、輸出文件是 C:\DB2\hellowld\user1_author.del。user1_author.del 文件的內容如下:
"Claire",1,"DB2 UDB ","<XDS FIL='author.del.001.xml'/>", 100 "Renata",2,"DB2 UDB ","<XDS FIL='author.del.002.xml'/>", 98 "Jane",3,"WEB COMMERCE ","<XDS FIL='author.del.003.xml'/>", 89
注意,MODULE_NAME 列被填充到 20 個字符。另外,XML 文檔實際上不在 DEL 文件中,這裡只有一個引用(XDS),它指向包含 XML 數據的文件。
下面是 author.del.001.xml 的內容(為了便於閱讀,已經調整了格式):
<?xml version="1.0" encoding="UTF-8" ?> <author_info> <name>Claire</name> <ID>1</ID> <department> <department_title>DB2 CE</department_title> <responsibility>Supporting customer problems</responsibility> <start_year>2005</start_year> </department> <department> <department_title>DB2 Index Manager</department_title> <responsibility>Develop new features for DB2 indexes</responsibility> <start_year/> </department> </author_info>
如果使用 Web 浏覽器查看 XML 文檔,會看到:
圖6. XML 數據