首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用spring-data-cassandra生成DDL CQL create table脚本

使用spring-data-cassandra生成DDL CQL create table脚本
EN

Stack Overflow用户
提问于 2019-06-15 00:33:25
回答 1查看 531关注 0票数 1

对于一个应用程序,我在一个json文件中管理Cassandra表定义。定义类似于分区键的数组,聚类键的数组,所有列的数组,然后是列定义的数组,每个列定义都有列名和它的数据类型。我们被要求创建一个可以读取这个json文件的工具,并创建一个包含CQL DDL create table脚本的文件。

代码语言:javascript
复制
{
   "tableDefinitions":[
       {
         "tableName":"employee"
         "partitionKeyColumns":["department"],
         "clusteringKeyColumns":["name"],
         "columns":["id","address"]
       }
   ],
   "columnDefinitions":[
       {"name":"id","type":"text"},
       {"name":"name","type":"text"},
       {"name":"department","type":"text"},
       {"name":"address","type":"text"}
   ]
}

为此,我们使用了CreateTableSpecification。要在这里设置列,我们的方法是-

代码语言:javascript
复制
public T column(String name, DataType type) {
    return this.column(CqlIdentifier.of(name), type);
}

其中DataType是com.datastax.driver.core.DataType。

在调用此方法之前,我将字符串dataType转换为com.datastax.driver.core.DataType。在我们的列上只有原始数据类型之前,这是很好的。当我们将其中一列的数据类型更改为set时,我们遇到了麻烦,因为无法将此字符串更改为相应的com.datastax.driver.core.DataType。因为如果检查这个类,它不会公开SET数据类型。

我无法将字符串集转换为com.datastax.driver.core.DataType

当您有可用的表定义时,有没有其他方法可以动态生成DDL create table CQL脚本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-15 19:24:23

您可以从底层的DataStax Java驱动程序中使用SchemaBuilder。并且DataType类型有对应的集合/地图/列表的methods -您只需要将正确的嵌套类型传递给它...

如下所示(未经过测试):

代码语言:javascript
复制
String cql = SchemaBuilder.create("ks", "tbl")
  .addPartitionKey("id", DataType.cint)
  .addColumn("value", DataType.set(DataType.cint))
  .buildInternal();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56602135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档