我想比较一下
在两个数据库模式中是相同的。
有这样的东西吗?可能来自其中一个数据库迁移管理工具?
答案 0 :(得分:3)
我不知道用于架构比较的高级API我使用DatabaseMetaData并不难找到差异,以便在所有表格中找到你可以做的事情:
DatabaseMetaData meta = con.getMetaData();
ResultSet res = meta.getTables(null, null, null,
new String[] {"TABLE"});
System.out.println("List of tables: ");
while (res.next()) {
System.out.println(
" "+res.getString("TABLE_CAT")
+ ", "+res.getString("TABLE_SCHEM")
+ ", "+res.getString("TABLE_NAME")
+ ", "+res.getString("TABLE_TYPE")
+ ", "+res.getString("REMARKS"));
}
res.close();
以下方法对您的意图也很重要:
getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
getExportedKeys(String catalog, String schema, String table)
getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)
getPrimaryKeys(String catalog, String schema, String table)
答案 1 :(得分:2)
LiquiBase有database diff。但我不知道是否有API,或只是工具。
答案 2 :(得分:2)
SchemaCrawler提供了一个Java API,它将数据库元数据显示为普通的Java对象。虽然没有用于比较数据库元数据对象的API,但SchemaCrawler使用标准差异工具生成设计为差异的文本(文本,JSON,CSV,HTML)输出。
Sualeh Fatehi,SchemaCrawler
答案 3 :(得分:1)
JDBC是唯一处理数据库的Java API。
您必须连接两者,获取各自的DatabaseMetaData,然后比较两者。