Cassandra更改表格以添加新列,将null添加为文本

Cassandra更改表格以添加新列,将null添加为文本,cassandra,Cassandra,我有一张卡桑德拉表格,里面有数据 我添加了三个新列country作为text,lat和long作为double 添加这些列时,将针对表中已存在的行插入空值。但是,null作为text插入国家/地区列,而null作为值插入lat和long列 这是默认行为吗?我可以在新创建的文本列下添加null作为值吗?Cassandra使用null表示缺少值,而不是显式插入值。在您的例子中,当您添加新列时(它们只是添加到存储在Cassandra自身中的表规范中),现有数据(存储在SSTables中)不会被修改

我有一张卡桑德拉表格,里面有数据

我添加了三个新列
country
作为
text
lat
long
作为
double

添加这些列时,将针对表中已存在的行插入空值。但是,null作为
text
插入国家/地区列,而
null
作为值插入lat和long列


这是默认行为吗?我可以在新创建的文本列下添加null作为值吗?

Cassandra使用
null
表示缺少值,而不是显式插入值。在您的例子中,当您添加新列时(它们只是添加到存储在Cassandra自身中的表规范中),现有数据(存储在SSTables中)不会被修改,所以当Cassandra读取旧数据时,它不会在SSTable中找到该列的值,而是输出null

但是,在不添加新列的情况下,也可以有相同的行为-只是不要为特定的常规列插入值(主键的列必须具有非空值!)。例如:

cqlsh> create table test.abc (id int primary key, t1 text, t2 text);
cqlsh> insert into test.abc (id, t1, t2) values (1, 't1-1', 't2-1');
cqlsh> insert into test.abc (id, t1) values (2, 't1-2');
cqlsh> insert into test.abc (id, t2) values (3, 't3-3');
cqlsh> SELECT * from test.abc;

 id | t1   | t2
----+------+------
  1 | t1-1 | t2-1
  2 | t1-2 | null
  3 | null | t3-3

(3 rows)