我正在使用SchemaCrawlwer从sql server DB中获取架构详细信息,但未获取完整详细信息。它能够获取表元数据,主键和外键详细信息,但不能获取索引详细信息,表/视图定义和注释。我提供了必需的属性,但仍然无法正常工作。请调查并提供帮助。
请检查以下代码:
public String getMetadata()throws Exception
{
Properties prop = System.getProperties();
// Create the options
final SchemaCrawlerOptionsBuilder optionsBuilder = SchemaCrawlerOptionsBuilder
.builder().
// Set what details are required in the schema - this affects the
// time taken to crawl the schema
withSchemaInfoLevel(SchemaInfoLevelBuilder.maximum())
.includeSchemas(new RegularExpressionInclusionRule("CAP_API_DEV.dbo"))
// .includeGreppedDefinitions(new RegularExpressionInclusionRule(".*"))
.includeAllRoutines();
final SchemaCrawlerOptions options = optionsBuilder.toOptions();
final Path outputFile = getOutputFile(null);
final OutputOptions outputOptions = OutputOptionsBuilder
.newOutputOptions(TextOutputFormat.html, outputFile);
final String command = "details";
Config config = new Config();
config.setBooleanValue("schemacrawler"
+ ".format.show_row_counts",true);
config.setBooleanValue("schemacrawler"
+ ".schema_info_level.retrieve_foreign_key_definitions",true);
config.setStringValue("schemacrawler.schema"
+ ".retrieval.strategy.indexes", "data_dictionary_all");
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_index_column_information",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_indexes",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_index_information",true);
config.setStringValue("schemacrawler.format"
+ ".identifier_quoting_strategy",
"quote_if_special_characters_and_reserved_words");
// config.setStringValue("select.INFORMATION_SCHEMA.VIEWS", "SELECT * FROM INFORMATION_SCHEMA.SYSTEM_VIEWS");
config.setStringValue("hsqldb.tables",
"SELECT * FROM INFORMATION_SCHEMA.SYSTEM_TABLES");
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_table_constraint_definitions",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_table_constraint_information",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_table_definitions_information",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_table_privileges",true);
config.setBooleanValue("schemacrawler.schema_info_level"
+ ".retrieve_tables",true);
config.setBooleanValue("schemacrawler.format"
+ ".no_schemacrawler_info",true);
final SchemaCrawlerExecutable executable = new SchemaCrawlerExecutable(command);
executable.setSchemaCrawlerOptions(options);
executable.setOutputOptions(outputOptions);
executable.setConnection(getConnection());
executable.setAdditionalConfiguration(config);
executable.execute();
FiletoJsonConvertor filetoJsonConvertor = new FiletoJsonConvertor();
return FiletoJsonConvertor.convertor(outputFile.toFile().getAbsolutePath());
// if(outputFile.toFile().exists()) {
// outputFile.toFile().delete();
// }
// System.out.println("Created output file, " + outputFile);
}