Генерация DDL с использованием jooq с использованием схемы и имени таблицы - PullRequest
1 голос
/ 01 апреля 2019

Я хочу создать DDL, используя схему и имя таблицы для любой базы данных. Ниже приведен код, который я пытаюсь:

DSLContext dSLContext = DSL.using(getPostgresqlDataSource().getConnection());
Queries ddl = dSLContext.ddl(DefaultCatalog.DEFAULT_CATALOG.WORLD_SEED.ATM);

for (Query query : ddl.queries()) {
    System.out.println(query);
}

private static DataSource getPostgresqlDataSource() { 
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName("org.postgresql.Driver");
    dataSource.setUrl(System.getenv("WORLD_JDBC_URL"));
    dataSource.setUsername(System.getenv("WORLD_JDBC_USERNAME"));
    dataSource.setPassword(System.getenv("WORLD_JDBC_PASSWORD"));
    return dataSource;
}

Здесь имя схемы и имя таблицы были использованы из сгенерированного объекта, но я хочу дать эти два в качестве входных данных без создания объектов

1 Ответ

2 голосов
/ 01 апреля 2019

Вы можете получить доступ к метаинформации в реальном времени из вашего соединения JDBC через DSLContext.meta(), отфильтровать по интересующей вас схеме и таблицам и передать ее в метод ddl().Обратите внимание, что org.jooq.Meta ссылается на мета-информацию немного меньше, чем сгенерированный код, поэтому ваш DDL может не отражать точную исходную модель.

...