在cassanda的官方驱动cassandra-driver-core-2.1.3.jar之前,创建表、修改表、创建索引操作,只能通过拼CQL语句,然后通过session去执行的方式。可能会经常导致语法格式错误。
在最新版的驱动cassandra-driver-core-2.1.3.jar中,提供了一种更方便的对表的修改方式。类似于用于增删改查操作的com.datastax.driver.core.querybuilder.QueryBuilder类,它提供了一个com.datastax.driver.core.schemabuilder.SchemaBuilder类用于对表的操作。
这个类可以构建几乎所有关于对表的操作,这里举例常用的操作:
先引入jar包:
1 2 3 4 5 | <dependency> <groupId>com.datastax.cassandra</groupId> <artifactId>cassandra-driver-core</artifactId> <version>2.1.3</version> </dependency> |
然后你就可以像写cql语句一样,流畅的使用SchemaBuilder了。其中省略了session的生成,可以参考《java实现cassandra的增删改查》
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | //创建表 Create createTbale = SchemaBuilder.createTable("mykeyspace", "mytable") .addPartitionKey("pk1", DataType.cint()) .addColumn("col1", DataType.text()) .addColumn("col2", DataType.bigint()); session.execute(createTbale); //增加一列 SchemaStatement addColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .addColumn("col3") .type(DataType.cdouble()); session.execute(addColumn); //删除一列 SchemaStatement dropColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .dropColumn("col2"); session.execute(dropColumn); //修改一列 SchemaStatement alterColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .alterColumn("col1") .type(DataType.cdouble()); session.execute(alterColumn); //列更改名字 SchemaStatement renameColumn = SchemaBuilder.alterTable("mykeyspace", "mytable") .renameColumn("col1") .to("col4"); session.execute(alterColumn); //增肌索引 SchemaStatement createIndex = SchemaBuilder.createIndex("idx_col4") .onTable("mykeyspace", "mytable") .andColumn("col4"); session.execute(createIndex); //删除索引 Drop dropIndex = SchemaBuilder.dropIndex("mykeyspace", "idx_col4") .ifExists(); session.execute(dropIndex); //删除表 Drop dropTable = SchemaBuilder.dropTable("mykeyspace", "mytable") .ifExists(); session.execute(dropTable); |
除非注明,赵岩的博客文章均为原创,转载请以链接形式标明本文地址
本文地址:https://zhaoyanblog.com/archives/626.html
支持一下,谢谢分享。