2010-08-16 105 views

回答

3

我不知道的模式比较我以前DatabaseMetaData它不是很难找到差异Ig与retieve所有的表,你可以做这样的事情一个高层次的API:

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

JDBC是处理数据库的唯一Java API。

你必须连接到两者,获得他们各自的DatabaseMetaData,并比较两者。

2

SchemaCrawler规定,提出了数据库的元数据作为普通老式的Java对象的Java API:为你的意图很重要。虽然没有API来比较数据库元数据对象,但SchemaCrawler使用标准差异工具生成设计为差异化的文本(文本,JSON,CSV,HTML)输出。

Sualeh Fatehi,SchemaCrawler