java - 通过使用 schema 和表名使用 jooq 生成 DDL

标签 java sql jooq

我想使用任何数据库的架构和表名生成 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;
}

这里已使用生成的对象中的架构名称和表名称,但我想将这两个作为输入而不生成对象

最佳答案

您可以通过 DSLContext.meta() 从 JDBC 连接访问实时元信息,按您感兴趣的架构和表进行过滤,并将其传递给 ddl() 方法。请注意,org.jooq.Meta 引用的元信息比生成的代码略少,因此您的 DDL 可能无法反射(reflect)确切的原始模型。

关于java - 通过使用 schema 和表名使用 jooq 生成 DDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55456024/

相关文章:

java - Spring拦截一个类中的异常

MySQL 选择为

Sqlite Scrolling Cursor 如何在重名的情况下正确滚动

java - jOOQ 和桥接表

java - Magento 休息 "Admin role not found"错误

java - 表格中的单元格之间是否总是存在自然的 "space"?

sql - 计算同一组成员的有效方法

postgresql - 为特定的 JOOQ 列自动转换 RHS 值

java - 如何使用 JOOQ 获得简单的 Sum?

java - 无法 check out Spring DB 连接,但 300 个连接中有 290 个是 "IDLE"