Cassandra 2.2.11从文本列添加新的地图列

时间:2018-03-29 12:59:59

标签: cassandra alter cqlsh

我们说我有两列的表格 primary key:id - 类型varcharnon-primary-key:数据 - 类型text

数据列仅包含json值,例如:

{
"name":"John",
"age":30
}

我知道我无法将此列更改为map类型,但也许我可以使用map列中的值添加新的data列,或者您可能有其他想法?

我该怎么办?我希望此表中的map列包含data

中的值

1 个答案:

答案 0 :(得分:1)

您可能希望使用CQL COPY命令将所有数据导出到CSV文件。

然后更改您的表并创建一个map类型的新列。

将导出的数据转换为包含UPDATE语句的另一个文件,其中只更新新创建的列,其值从JSON转换为map。对于转换,请使用您选择的工具或语言(无论是bash,python,perl还是其他)。

顺便说一句,请注意,使用map指定地图的关键字数据类型以及地图的值是什么数据类型。因此,您最有可能仅限于使用字符串,如果您想要通用,即map<text, text>。考虑这是否适合您的用例。