Schemacrawler: получение значений проверки Check из столбцов таблицы с использованием Java API - PullRequest
0 голосов
/ 22 января 2020

В последние несколько дней я пытаюсь получить проверочные ограничения и их значения из таблиц в базе данных MySQL с использованием последней версии 16.3.2 schemacrawler. Я смог получить таблицу, столбцы, первичные ключи и т. Д. 1018 *, используя то же самое, но получение проверочных ограничений становится проблемой. Я прошел через веб-сайт Суале, но не получил точных шагов, чтобы получить эту информацию. Если кто-то может поделиться фрагментами кода, это будет полезно.

Ниже приведена запись POM

    <dependency>
        <groupId>us.fatehi</groupId>
        <artifactId>schemacrawler</artifactId>
        <version>16.3.2</version>

А ниже приведен код извлечения каталога, который я использую , @Override publi c Каталог getTargetDBObjects (ProjectDatabase projectDB) выбрасывает AppException {Catalog theCatalog = null; Соединение theConn = DBUtils.getTargetDBConnection (projectDB);

    // 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.detailed())
        .includeSchemas(new RegularExpressionInclusionRule("appuser"))
        //.includeAllRoutines()
        .includeAllSequences();


    final SchemaCrawlerOptions options = optionsBuilder.toOptions();


    logger.info("Constraint Definition Processing "+options.getSchemaInfoLevel().isRetrieveTableConstraintDefinitions());
    logger.info("Constraint Information Processing "+options.getSchemaInfoLevel().isRetrieveTableConstraintInformation());

    logger.info("Schema crawling at work........");
    try {
        theCatalog = SchemaCrawlerUtility.getCatalog(theConn, options);
    } catch (SchemaCrawlerException e) {
        e.printStackTrace();
    }
    logger.info("Schema crawled successfully.");
    return theCatalog;
}

        Collection<TableConstraint> allConstraints = theTable.getTableConstraints();
        logger.info("-------@#$> Constraint length "+ allConstraints.size());

Здесь длина allConstraints.size всегда равна ZERO, тогда как в таблице есть проверочные ограничения, определенные для некоторых столбцов. Также файл журнала Schemacrawler показывает, что были выбраны не табличные ограничения.

INFO: Total time taken for <crawlTables> - 00:00:02.580 hours
-  1.7% - 00:00:00.045 - <retrieveTables>
- 12.1% - 00:00:00.312 - <retrieveColumns>
- 72.2% - 00:00:01.863 - <retrieveForeignKeys>
-  3.3% - 00:00:00.085 - <filterAndSortTables>
- 10.6% - 00:00:00.273 - <retrieveIndexes>
-  0.0% - 00:00:00.000 - <retrieveTableConstraintInformation>
-  0.0% - 00:00:00.000 - <isRetrieveTableConstraintDefinitions>
-  0.0% - 00:00:00.001 - <retrieveTriggerInformation>
-  0.0% - 00:00:00.000 - <retrieveViewInformation>
-  0.0% - 00:00:00.000 - <retrieveTableDefinitions>
-  0.0% - 00:00:00.000 - <retrieveIndexInformation>
-  0.0% - 00:00:00.000 - <retrieveAdditionalTableAttributes>
-  0.0% - 00:00:00.000 - <retrieveTablePrivileges>
-  0.0% - 00:00:00.000 - <retrieveAdditionalColumnAttributes>
-  0.0% - 00:00:00.001 - <retrieveTableColumnPrivileges>

Спасибо

...