使用 cql 复制地图数据
use cql copy for map data
有一个 post 用于从 csv 复制多值数据,如 list 和 set 到 cassandra table,
Import CSV with multi-valued (collection) attributes to Cassandra
有没有人为地图类型数据做过这件事?
当然,我会给你一个同时使用 map
和 list
的简单示例。考虑以下 table 设计用于保存星际飞船数据,以及船员和乘客名单:
CREATE TABLE shipregistry (
name text,
class text,
hullnumber text,
crew map<text,text>,
passengers list<text>,
PRIMARY KEY ((name))
);
我将从以下文本文件 (/home/aploetz/shipregistry_20150302.csv
) 加载这个 table 的数据,该文件有一个 header 和一行 pipe-delimited 数据:
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
数据是 comma-delimited 并括在方括号中:
['Simon Tam', 'River Tam', 'Derial Book', 'Inara Serra']
同样,crew
列的 map
数据是 comma-delimited 列表 key-value 对并括在大括号中:
{'1st Officer': 'Zoey Washburne', 'captain': 'Malcolm Reynolds', 'engineer': 'Kaylee Frye', 'pilot': 'Hoban Washburne'}
我选择竖线作为分隔符是为了让自己更轻松,并避免与 collection 类型中的逗号发生潜在冲突。
有一个 post 用于从 csv 复制多值数据,如 list 和 set 到 cassandra table,
Import CSV with multi-valued (collection) attributes to Cassandra
有没有人为地图类型数据做过这件事?
当然,我会给你一个同时使用 map
和 list
的简单示例。考虑以下 table 设计用于保存星际飞船数据,以及船员和乘客名单:
CREATE TABLE shipregistry (
name text,
class text,
hullnumber text,
crew map<text,text>,
passengers list<text>,
PRIMARY KEY ((name))
);
我将从以下文本文件 (/home/aploetz/shipregistry_20150302.csv
) 加载这个 table 的数据,该文件有一个 header 和一行 pipe-delimited 数据:
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
数据是 comma-delimited 并括在方括号中:
['Simon Tam', 'River Tam', 'Derial Book', 'Inara Serra']
同样,crew
列的 map
数据是 comma-delimited 列表 key-value 对并括在大括号中:
{'1st Officer': 'Zoey Washburne', 'captain': 'Malcolm Reynolds', 'engineer': 'Kaylee Frye', 'pilot': 'Hoban Washburne'}
我选择竖线作为分隔符是为了让自己更轻松,并避免与 collection 类型中的逗号发生潜在冲突。