我正在编写一个JDBC程序来获取一些数据库元数据信息,作为其中的一部分,我想查询给定模式中的所有索引。
我查看了一些JDBC API,并且从DatabaseMetaData
接口,可以使用getTables
之类的方法来获取给定模式的所有表。我试图找到类似的东西(或使用一些API的组合写)来获取模式上的所有索引,视图等信息。有办法搞定吗?例如,对于索引,有一个方法 - getIndexInfo
但是对于模式中的每个表,我需要调用此方法。我的数据库是db2。
答案 0 :(得分:1)
我会使用DB2 Catalog Views来获取信息。
例如,如果你想要一个表的所有索引,你可以使用这样的查询(我假设你在Linux / Unix / Windows上使用DB2):
SELECT *
FROM SYSCAT.INDEXES
WHERE tabname = @tablename
AND tabschema = @schema
ORDER BY indname
答案 1 :(得分:0)
尝试了一些方法之后,我做了以下几点 1.编写了一个围绕JDBC调用的包装器来简化我的工作。 2.查询syscat架构,如
select tabname from syscat.TABLES where tabschema = ?
如果我找到更好的解决方案,会发布。非常感谢所有的帮助。
答案 2 :(得分:0)
从Syscat架构获取数据不正确。在ZOS环境中,Syscat可能存在也可能不存在,因为在安装时您可以选择不安装Syscat架构。所以最好使用Sysibm架构。