Cassandra复制命令仅插入部分数据

时间:2014-10-31 14:29:54

标签: sql database cassandra copy

我是cassandra db的新手,我正在尝试将数据从csv文件导入cassandra,我执行以下命令,导入表,首先我使用

创建表

create table cdma_mkt_bte(date_value timestamp primary key,region varchar,vendor varchar);

然后使用

复制

使用HEADER = TRUE从'/ usr / share / dse / bin / cdma_mkt_bte'复制cdma_mkt_bte(date_value,region,vendor);

问题是csv文件中的表有大约43,000行,而只有211行被导入cassandra,我看了211和212行,看看是否有奇怪的事情,似乎没问题。你能帮我么?以及将csv导入cassandra数据库的其他选项是什么。

谢谢!真的很感激帮助!

2 个答案:

答案 0 :(得分:1)

您的主键似乎是date_value。 cassandra中的所有插入和更新基本上都是主键上的upsert。如果两个记录具有相同的主键,则第二个记录将覆盖第一个。如果唯一标识记录的方法是date_value + region + vendor,那么您的架构应该如下:

create table cdma_mkt_bte (date_value timestamp, region varchar, vendor varchar, 
primary key (date_value, region, vendor));

这可能是您没有获得预期数量的记录的原因吗?

答案 1 :(得分:0)

本文档中描述了可用于COPY命令的选项:

http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/copy_r.html?scroll=reference_ds_mh1_1hs_xj__description_unique_3

继续在CSV文件中查找问题。检查一行末尾的隐藏字符。我想我记得一个导致问题的尾随空格。该问题可能未完全位于COPY命令报告的位置。我在Excel中打开了CSV并显示了问题。