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

Cassandra 2.2.11 add new map column from text column

假设我有 table 两列 primary key: id - 类型 varcharnon-primary-key:数据 - 类型 text

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

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

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

我该怎么办?我想在此 table 中获取 map 列,其中的值来自 data

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

然后更改您的 table 并创建类型为 map 的新列。

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

顺便说一句,请注意,使用 map 可以指定地图的键是什么数据类型,地图的值是什么数据类型。因此,您很可能只能在想要通用时才使用字符串,即 map<text, text>。考虑这是否适合您的用例。