是否有 JDBC 方法来获取子表及其所有后代。
getExportedKeys 仅返回直接子代,而不是其所有后代。如果我继续递归调用 getExportedKeys() 方法,大约需要 3 分钟来处理 50 个左右的表(这真的很慢)
有人可以帮我解决问题。
主要目标是避免使用查询,因为我将处理不同的数据库。
使用的递归函数:
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);
}