2013-10-08 27 views
0

我正在編寫一個JDBC程序來獲取某些數據庫元數據信息,並且我想要查詢給定模式中所有索引的一部分。 我看了一些JDBC API並從DatabaseMetaData接口,可以使用像getTables這樣的方法來獲取給定模式的所有表。我試圖找到類似的東西(或使用某些API的組合來編寫)以獲取像架構上的所有索引,視圖等信息。有沒有辦法得到它?例如,對於索引有一個方法 - getIndexInfo但對於模式中的每個表,我需要調用這個方法。我的數據庫是db2。獲取給定模式的所有索引信息 - db2

+0

使用JDBC提供的接口:no。如果您不想遍歷所有表併爲每個表調用'getIndexInfo',則可能需要直接查詢DB2的信息模式。 –

回答

1

我會使用DB2 Catalog Views來獲取信息。

舉個例子,如果你希望所有表的索引,你會使用這樣的查詢(我假設你正在使用DB2在Linux/Unix/Windows的位置):

SELECT * 
FROM SYSCAT.INDEXES 
WHERE tabname = @tablename 
    AND tabschema = @schema 
ORDER BY indname 
+0

不建議您使用SYSIBM視圖,因爲它們通常在DB2版本之間更改。記錄的目錄視圖位於SYSCAT模式中(鏈接指向) - 它們保證更加穩定和向後兼容。 – mustaccio

+0

糟糕。猜猜我正在用來查詢DB2 for z/OS(它甚至沒有SYSCAT模式)目錄視圖。 ':)'我改變它使用SYSCAT視圖。 – bhamby

+0

謝謝.. Syscat正在工作..讓我嘗試更多使用不同的產品哪個Syscat有.. – user1588737

0

我嘗試了一些方法後執行了以下操作 1.寫了一個JDBC調用的包裝來簡化我的工作。 2.查詢的SYSCAT模式等

select tabname from syscat.TABLES where tabschema = ? 
  1. 寫了一些Java工具來比較2組由2模式返回的結果的和也做了一些手工比較。

如果我找到更好的解決方案,將它張貼。非常感謝所有的幫助。

0

從Syscat模式獲取數據不正確。在ZOS環境中,可能存在或不存在Syscat,因爲在安裝時您可以選擇不安裝Syscat模式。所以更好地使用Sysibm架構。