使用 apache 元模型读取数据源元数据
Reading Datasource metadata using apache metamodel
我想读取数据源的元数据。无论是数据库还是文件。要求是显示可用 table 的集合和每个 table 的列。我还想知道外键等的详细信息。我知道这应该可以使用 JDBC API。但是我想知道 Apache Metamodel 是否以抽象的方式支持它,可以用于所有类型的数据源。
太好了,如果您可以分享任何示例。
……
拉姆
可以在 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("\t\t 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
我想读取数据源的元数据。无论是数据库还是文件。要求是显示可用 table 的集合和每个 table 的列。我还想知道外键等的详细信息。我知道这应该可以使用 JDBC API。但是我想知道 Apache Metamodel 是否以抽象的方式支持它,可以用于所有类型的数据源。
太好了,如果您可以分享任何示例。
…… 拉姆
可以在 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("\t\t 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