2015-03-02 99 views

回答

4

当然,我会给你一个简单的例子,同时使用maplist。考虑下面的台面设计,可以容纳飞船的数据,以及船员的名单和乘客:

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命令,然后将其导入:竖线分隔的数据

[email protected]:presentation> COPY shipregistry FROM 
'/home/aploetz/shipregistry_20150302.csv' WITH HEADER=true and DELIMITER='|'; 

1 rows imported in 0.017 seconds. 

需要注意的,是,list数据为passengers列,是逗号分隔的和括在括号中:

['Simon Tam', 'River Tam', 'Derial Book', 'Inara Serra'] 

同样,map数据为crew列,是逗号分隔的键 - 值对的列表,并包含在括号:

{'1st Officer': 'Zoey Washburne', 'captain': 'Malcolm Reynolds', 'engineer': 'Kaylee Frye', 'pilot': 'Hoban Washburne'} 

我选择了一个管作为分隔符,以使这更容易对自己和避免与集合类型逗号潜在的冲突。

+0

太棒了。我会试试看。这是在文档中搜索? – bhomass 2015-03-03 19:18:35

+0

@ user1058511不,我只知道这一点,因为上周我必须这样做。不幸的是,有些文档需要更详细的示例来刷新。 – Aaron 2015-03-03 19:22:36

+0

@Aaron - 如果映射字段缺少数据会怎么样? IE:出来'{'因素':'1','rep':}''''''rep'缺少值? CQL回收了一个很好的'没有可行的替代方案...' – tymeJV 2015-11-10 16:21:15

相关问题