使用 jooq 生成 DDL,方法是使用模式和表名



我想使用任何数据库的模式和表名生成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 可能无法反映确切的原始模型。

最新更新