无法使用Java API获取详细的架构信息?

时间:2019-07-28 17:22:38

标签: schemacrawler

我正在使用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);
          }

0 个答案:

没有答案