【发布时间】:2015-03-02 22:43:11
【问题描述】:
有一篇文章用于将列表和集合等多值数据从 csv 复制到 cassandra 表,
Import CSV with multi-valued (collection) attributes to Cassandra
有人为地图类型数据做过这个吗?
【问题讨论】:
有一篇文章用于将列表和集合等多值数据从 csv 复制到 cassandra 表,
Import CSV with multi-valued (collection) attributes to Cassandra
有人为地图类型数据做过这个吗?
【问题讨论】:
当然,我会给你一个简单的例子,它同时使用了map 和list。考虑下表旨在保存星舰数据以及船员和乘客列表:
CREATE TABLE shipregistry (
name text,
class text,
hullnumber text,
crew map<text,text>,
passengers list<text>,
PRIMARY KEY ((name))
);
我将从以下文本文件 (/home/aploetz/shipregistry_20150302.csv) 加载此表的数据,该文件有一个标题和一行以竖线分隔的数据:
name|class|crew|hullnumber|passengers
Serenity|03-K64-Firefly|{'1st Officer': 'Zoey Washburne', 'captain': 'Malcolm Reynolds', 'engineer': 'Kaylee Frye', 'pilot': 'Hoban Washburne'}|G-82659|['Simon Tam', 'River Tam', 'Derial Book', 'Inara Serra']
然后我将使用 cqlsh COPY 命令导入它:
aploetz@cqlsh:presentation> COPY shipregistry FROM
'/home/aploetz/shipregistry_20150302.csv' WITH HEADER=true and DELIMITER='|';
1 rows imported in 0.017 seconds.
需要注意的是,passengers 列的 list 数据以逗号分隔并括在括号中:
['Simon Tam', 'River Tam', 'Derial Book', 'Inara Serra']
同样,crew 列的 map 数据是一个以逗号分隔的键值对列表并用大括号括起来:
{'1st Officer': 'Zoey Washburne', 'captain': 'Malcolm Reynolds', 'engineer': 'Kaylee Frye', 'pilot': 'Hoban Washburne'}
我选择了一个竖线作为分隔符,以使我自己更容易做到这一点,并避免与集合类型中的逗号发生潜在冲突。
【讨论】:
{'factor': '1', 'rep': } - 其中rep 缺少价值? CQL 吐回了一个不错的No viable alternative at input...