2

我在 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,..) values(..,..,'some value',..) 时,它只是在 COL1 中输入了 NULL。

建议一些动态添加列的好方法。如果我想添加大量列,我认为 ALTER 表不是好方法。我正在使用 Java 程序中的 Hector 库来动态添加列。

4

1 回答 1

4

也许 CQL 不是您的最佳选择。CQL 要求您预先定义架构以允许类似 SQL 的语法功能,但它带走了 Cassandra 的一些有用的动态特性。使用几乎所有 Cassandra 客户端的基于 Thrift 的变异功能,您可以简单地命名您要编写的列,如果它不存在,它将为您创建。

例如:

ks.insert(key, createColumnPath(colName), bytes(value));
于 2013-02-11T14:01:19.633 回答