我需要更改表格以在特定列或最后一列之后添加新列,我已通过该文档但没有运气。
答案 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_c
和column_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