是否有JDBC方法来获取子表及其所有后代。
getExportedKeys仅返回直接子节点而不返回其所有后代节点。如果我继续以递归方式调用getExportedKeys()方法,那么50个左右的表大约需要3分钟(这非常慢)
有人可以帮我解决问题。
主要目标是避免使用查询,因为我将处理不同的数据库。
使用的递归函数:
private static void getChildTables(DatabaseMetaData dbmd,Set<String> dependencies,String tableName,String schemaname ) throws SQLException{
ResultSet rs3 = dbmd.getExportedKeys(null,schemaname, tableName);
while (rs3.next()){
if(dependencies.contains(rs3.getString(7)))
continue;
dependencies.add(rs3.getString(7));
String childTable=rs3.getString(7);
getChildTables(dbmd, dependencies, childTable, null);
rs3.close();
rs3 = dbmd.getExportedKeys(null,schemaname, tableName);
}