2016-05-04 58 views
4

试图建立一个Vertica的表JOOQ 3.5.x的:在Schema "my_schema" does not exist如何使用JOOQ创建模式?

Connection connection = create(); 
DSLContext dslContext = DSL.using(connection); 
Field<String> myColumn = DSL.field("my_column", SQLDataType.VARCHAR); 
Table table = DSL.tableByName("my_schema", "my_table"); 
dslContext.createTable(table) 
     .column(myColumn, myColumn.getDataType()) 
     .execute(); 

失败我可以解决这个问题:

dslContext.execute("create schema if not exists my_schema"); 

,但我想知道如果有一个更优雅的方式来创建一个架构与JOOQ?

感谢

还没有被列入

回答

1

目前JOOQ涵盖只是一个子集,可以对服务器和架构管理执行的可能DDL语句的,所以你必须回落到计划的老SQL。

如果你需要做大量的DDL的工作,你应该开始看看3.8的最新版本,因为这具有扩展功能,包括

  • 缺省列值在CREATE TABLE或ALTER TABLE语句
  • 如果在DROP语句中存在
  • 如果不在CREATE语句中存在
  • ALTER TABLE .. {RENAME | RENAME COLUMN |重命名约束}声明

3.6版添加

  • ALTER TABLE添加约束(具有唯一的主键,外键,CHECK)
  • ALTER TABLE DROP CONSTRAINT
  • CREATE TEMPORARY TABLE
+1

正如后续,版本3.9增加了以下内容 - 多种RENAME语句 - {CREATE | ALTER | DROP} SCHEMA语句 - 用于ALTER和DROP语句的有用IF EXISTS子句 - 用于CREATE语句的有用IF NOT EXISTS子句 - 支持部分索引(CREATE INDEX .. WHERE) - 支持ASC | DESC在CREATE INDEX语句中排序 - 支持Oracle的CONSTRAINT ..使用INDEX ..子句 - 支持IDENTITY列 - 更好地支持约束构建 –