Cassandra在特定列后添加列

时间:2017-11-17 18:20:58

标签: cassandra cql alter

我需要更改表格以在特定列或最后一列之后添加新列,我已通过该文档但没有运气。

2 个答案:

答案 0 :(得分:3)

假设我从一个具有此定义的表开始:

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT,
    column_b TEXT,
    column_c TEXT,
    column_z TEXT,
    PRIMARY KEY (column_n));

1-添加列很简单。

ALTER TABLE mykeyspace.letterstable ADD column_j TEXT;

2-添加新列后,我的表定义如下所示:

desc table mykeyspace.letterstable;

CREATE TABLE mykeyspace.letterstable (
    column_n TEXT,
    column_b TEXT,
    column_c TEXT,
    column_j TEXT,
    column_z TEXT,
    PRIMARY KEY (column_n));

这是因为Cassandra中的列以ASCII-betical顺序存储在键之后(因此column_n始终是第一个,因为它是唯一的键)。我不能告诉Cassandra我希望我的新column_j追踪column_z。它将自己置于column_ccolumn_z之间。

答案 1 :(得分:2)

Cassandra将根据分区&存储表数据。聚类密钥。

用于添加列的标准CQL:

ALTER TABLE keyspace.table ADD COLUMN column1 columnType;

通过CQLSH为给定表运行DESC表不会描述数据的存储方式。它将始终列出分区键和&首先聚类密钥;然后按字母顺序排列其余列。

https://docs.datastax.com/en/cql/3.1/cql/cql_reference/alter_table_r.html

Cassandra create table won't keep column order