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)