使用apache元模型读取数据源元数据



我想读取数据源的元数据。无论是数据库还是文件。要求是显示每个表的可用表和列的集合。我也想知道外键等的细节。我知道这应该可以使用JDBC API。但我想知道Apache元模型是否以一种抽象的方式支持这一点,这种方式可以用于所有类型的数据源。

很好,如果你能分享任何例子的话。

Ram

模式、表和列可以在Apache元模型中进行探索。DataContext有一个名为"information_schema"的模式,您可以在该模式中查看有关数据上下文的元数据。查找以下代码段作为示例:

    // Prepare a data context based on plain old Java objects
    List<TableDataProvider<?>> tableDataProviders = new ArrayList<TableDataProvider<?>>();
    SimpleTableDef tableDef1 = new SimpleTableDef("snippetTableName1", new String[] {"id", "name"});
    tableDataProviders.add(new ArrayTableDataProvider(tableDef1,
            new ArrayList<Object[]>()));
    PojoDataContext dataContext = new PojoDataContext("snippetSchemaName", tableDataProviders);
    // Prints a schema tree
    for (Schema schema : dataContext.getSchemas()) {
        System.out.println("Schema: " + schema.getName());
        for (Table table : schema.getTables()) {
            System.out.println("t Table: " + table.getName());
            for (Column column : table.getColumns()) {
                System.out.println("tt Column: " + column.getName() + " of type: " + column.getType());
            }
        }
    }

这应该打印:

Schema: information_schema
 Table: tables
     Column: name of type: VARCHAR
     Column: type of type: VARCHAR
     Column: num_columns of type: INTEGER
     Column: remarks of type: VARCHAR
 Table: columns
     Column: name of type: VARCHAR
     Column: type of type: VARCHAR
     Column: native_type of type: VARCHAR
     Column: size of type: INTEGER
     Column: nullable of type: BOOLEAN
     Column: indexed of type: BOOLEAN
     Column: table of type: VARCHAR
     Column: remarks of type: VARCHAR
 Table: relationships
     Column: primary_table of type: VARCHAR
     Column: primary_column of type: VARCHAR
     Column: foreign_table of type: VARCHAR
     Column: foreign_column of type: VARCHAR
Schema: snippetSchemaName
     Table: snippetTableName1
         Column: id of type: VARCHAR
         Column: name of type: VARCHAR

最新更新