我在CQl3中有以下表格
create table userInfo
(
userid text,
email text,
firstName text,
lastName text,
city text,
Primary key (userid,email)
);
现在我想根据用户选择动态地将两列COL1和COL2添加到此表中。我该怎么做?
我做了以下事情
ALTER TABLE ADD COL1 text;
ALTER TABLE ADD COL2 text;
它将COL1和COL2添加到表格中。 然后,当我插入userInfo(..,..,COL1,..)值(..,..,'some value',..)时,它只是在COL1中放入NULL。
建议一些动态添加列的好方法。如果我想要添加大量的列,我不认为ALTER表是好的方法。我正在使用java程序中的Hector库来动态添加列。
答案 0 :(得分:4)
也许CQL不是你的最佳选择。 CQL要求您预先定义模式以允许类似SQL的语法功能,但它会消除Cassandra的一些有用的动态功能。使用几乎任何Cassandra客户端的基于Thrift的变异功能,您只需命名要写入的列,如果它不存在,则会为您创建。
例如:
ks.insert(key, createColumnPath(colName), bytes(value));