程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> DB2 的命令行處理器和腳本編寫

DB2 的命令行處理器和腳本編寫

編輯:DB2教程

何時使用 DB2 命令行處理器

IBM DB2 命令行處理器聽起來沒什麼特別之處,但實際上它是 DB2 的接口,它最佳地體現了 DB2 的威力,以及 DB2 的簡單性和通用性。命令行並不可愛(實際上,Windows 上的 DB2 曾得到一個“強大但是不可愛”的名聲。那是 DB2 在 NT 上初次發布的時候,當時還沒有 Control Center 可用)。命令行使我們想起了 UNIX 上的 Telnet,還有 1981 年開始使用的 DOS 命令。但是,如果您的 SQL 命令夠強大—— 或者您想通過輸入一個快速命令來驗證 DB2 的安裝情況——那麼命令行是理想的,而且通常比通過像 PowerBuilder 或者 Access 這樣的前端提交請求要來得快。CLP 是通往每一個 DB2 編程接口的直接路徑。它使得任何可以程式化地調用的東西能夠通過接口來調用——或者在一個簡單的腳本(就像我們曾在 DOS 中編寫過的 .BAT 文件)中調用。像 MVS 上的 SPUFI、VM 上的 ISQL 以及 VSE 上的 SQLDBSU 這些類似的工具都十分耐用,這使得我們深信 CLP 必定可以使用很長一段時間。

本文將向您展示如何使用命令行處理器(簡稱 CLP)來為您帶來好處。如果對某些工作原理還不夠明了的話,可以參考手冊(DB2 Command Reference),這個手冊用一整章介紹 CLP 的使用。

驗證安裝情況和判定問題所在

當我第一次在 OS/2 上安裝 DB2 時(在此一年前 DB2 已經可以在 NT 上使用了),我已經在很多其他的操作系統(DOS,VM,VSE,MVS?,AS/400?)上使用過 SQL Database 管理器了。成功地安裝完之後,我開始閱讀 about 信息,這時我被“cataloging nodes and databases(編目節點和數據庫)”這件事給弄糊塗了。catalog 這個詞與過去惹人喜愛的 SYSCAT 和 SYSIBM 目錄相比有著動詞化的意味。有時候,我會對著 DB2 大聲埋怨:“我不想編目任何東西,我只是想通過運行一個 SELECT 語句來確保我正確地安裝了 DB2。”幾個小時之後,我冷靜下來,了解到只有創建了一個數據庫之後 DB2 才會有數據庫目錄;您不需要在本地機器上將節點和數據庫編目——只有在一個連接到服務器的客戶機上時才需要編目。創建樣本數據庫非常容易——運行 db2sampl 就可以了。在驗證安裝情況時,命令行處理器 正是我所需要的工具,這時可以運行:

DB2 SELECT COUNT(*) FROM SYSCAT.TABLES
在 UNIX 和 OS/2 上,您只需使用一個常見的操作系統提示符,並在任何 DB2 命令或者 SQL 語句前面加上"DB2" 。在 Windows 上,事情要麻煩一些,這在後面會解釋,不過您可以通過輸入 DB2CMD 來創建一個適合 DB2 命令、SQL 和 操作系統命令(例如 dir 和 ren)的提示符。您甚至可以混合使用 SQL、DB2 命令和操作系統參數,例如用 |more 來滾動屏幕,用大於號(>)來向文件輸送內容:

DB2 select * from employee>c:\\tmp\\emp.out |more
注意:對於那些對 DB2 和操作系統都有意義的符號,比如 Windows 上的大於號(>),操作系統會最先給予解釋。SELECT * FROM EMPLOYEE WHERE SALARY > 9999 語句會將錯誤消息輸送到一個名為 9999 的文件。要劃清這些特殊符號的界限;您應該輸入:

SELECT * FROM EMPLOYEE WHERE SALARY ">" 9999
雖然您的用戶可能永遠不會使用 CLP 來訪問他們的數據,對於 DBA 或者應用程序的編程人員來說, CLP 在工具箱中是最基本的工具:它就像是在所有場合都適用的燕尾服。對於關鍵應用來說,往往數據庫是關鍵之處,如果某個地方出錯的話,問題的判定會比較困難。在大型主機/微型計算機領域中,問題可能出在應用程序中,也可能出在軟件系統中,但是問題總可以界定在一台計算機以內。而在客戶機-服務器領域中,問題可能隱藏在客戶機系統軟件中(操作系統,數據庫客戶機,或者通信協議),可能隱藏在客戶機應用程序代碼中,可能隱藏在服務器應用程序代碼中(如果您正在使用觸發器,用戶定義的函數,或者存儲過程),還可能隱藏在服務器上的其他地方。3-層應用包括 Web 服務器、浏覽器和第三層的硬件。CLP 在這裡有什麼用呢?答案就是,它可以將應用程序從這一架構中分割出來。如果您發現一個問題,那麼可以將故障請求翻譯成簡單的 SQL,然後從以下機器上的 CLP 運行該 SQL:

服務器
客戶機
Web 服務器
根據哪裡沒問題,哪裡有故障,您就可以判定是 DB2 本身有故障(很可能在通過 CLP 提交 SQL的服務器上出故障的形式與客戶機應用程序出故障的形式是一樣的),還是問題出在通信上(請求在 客戶機出了故障,而在服務器上沒有問題),或者問題是出在 Web 服務器上(問題只出在最遠的地方)。

幫助

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved