微軟的 Excel 試算表廣泛應用於當今的商業環境中。儘管 Excel 能夠讀取和顯示分隔檔案,但 .xls 專有格式提供了其他一些富於表現力的特性,其中包括字型格式和多工作表試算表。
許多商業和開放原始碼的工具都提供了產生可由 Excel 讀取的報表的功能。 比如,您可以使用 Oracle Reports 產生一個試算表,或使用 SQL*Plus 輸出一個由逗號分隔的檔案。 利用現有的一些工具可以訪問多個資料來源。 但報表的格式與特定查詢的結果緊密聯絡,而不同的資料來源有時會產生不同的結果。 (比如,對兩個不同資料庫中的表進行 SELECT * FROM emp 查詢,返回來的列的數量和類型將必然不同。) 出於各種各樣的原因,您可能要訪問幾個不同的資料來源,然後在一個試算表中整理返回的結果:
資料庫管理員可能希望比較不同資料庫的配置。
應用開發人員可能需要檢查不同資料庫中 PL/SQL 對象的版本。
在資料庫間移植資料時,資料庫管理員可能需要估計作業的進度。
程式員使用測試資料庫調試應用程式時,可能需要將當前資料與生產環境中的資料進行比較。
根據資料庫的不同結構和用途,可能還有其它原因促使您想要產生此類試算表,但所有原因都依賴於資料庫的功能要求和定義。
本文將說明如何使用 Apache Jakarta POI 開放原始碼項目從幾個不同資料來源產生一個試算表。 活頁簿中的每一個工作表將顯示從某個給定 Oracle 資料庫返回的結果。 在當前項目中您要達到的要求是:
運行該軟體建立一個包含從一個或多個 Oracle 資料庫獲得的資料的試算表。
使用者將定義一個隨意 SQL 查詢,然後由各個配置的資料庫處理該查詢。
使用者將定義一個或多個資料庫連接。
產生一個設定檔,其中包括您定義的資料連線和 SQL 查詢。
該設定檔的格式為 XML 格式。
將產生一個工作表顯示每個資料庫返回的結果。
將依據伺服器名稱和 Oracle 系統標識符(又稱為 Oracle SID)命名每個工作表。
試算表將以粗體顯示欄位標題(基於資料庫列)。
該軟體將用 Java 編寫。
將使用 JDBC 訪問資料庫。
將使用 Jakarta POI 產生試算表。
您可以為生產系統添加許多要求。 很明顯,上面的列表中遺漏了口令加密方面的內容。 雖然現在已經能夠處理 SQL 資料類型,但是一個更健全的解決方案還應該能夠處理一些特殊的資料類型,如 BLOB(二進位大對象)、CLOB(字元大對象)和 LONG。 目前只能調用一個 XML 設定檔和一個指令碼來設定環境和執行 Java 類,還未提供便於使用的圖形介面。 由於只執行一個查詢,因此必須保證該 SQL 查詢無語法錯誤,並基於每個資料庫的對象返回一個結果集。 且記錄的內容非常少。 儘管如此,如果程式達到了上面的要求,那麼該程式還是相對容易使用的,並且它能夠快速產生包含許多資料庫資料的文檔。 如果需要,還可以使用 Excel 編輯該文檔的格式。 因為將多個資料來源的資料納入了一個試算表中,所以我們可以很方便對從各資料庫提取的資料進行比較了。 此外,您使用的主要機制即 POI API (API) 調用清晰可辨,而不會被構建一個功能齊備的解決方案所需的其他代碼和資源所淹沒。