Jac*_*ack 5 java indexing jdbc
我想编写一个SpringBatch Tasklet,它自动激活或取消激活给定数据库表的所有索引.代码需要独立于DBMS(需要SQL Server,Oracle和HSQLDB).
这是我到目前为止所尝试的:
DatabaseMetaData dbMetaData = connection.getMetaData();
ResultSet rs = dbMetaData.getIndexInfo(null, null, tableName, true, false);
while (rs.next()) {
// work with ResultSet
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有获得索引的名称或任何有用的信息.
那么,任何人都可以提供一些关于如何使用JDBC连接对象将表的所有索引设置为活动或非活动的提示吗?
您必须在主键(DatabaseMetaData.getPrimaryKeys()
用于检索)和其他索引(通过dbMetaData.getIndexInfo(null, null, tableName, true, false)
)之间进行区分.
在你的循环中使用:
rs.getString("INDEX_NAME")
提取索引名称rs.getBoolean("NON_UNIQUE")
提取独特的信息rs.getShort("TYPE")
提取索引类型rs.getInt("ORDINAL_POSITION")
提取序数位置使用ORDINAL_POSITION
作为键断裂(当当前值是<=前一个)来检测的折射率变化.
阅读官方DatabaseMetaData.getIndexInfo()doc
归档时间: |
|
查看次数: |
7742 次 |
最近记录: |