В последние несколько дней я пытаюсь получить проверочные ограничения и их значения из таблиц в базе данных 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>
Спасибо