Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉的副本没有插入一行_Cassandra_Cql_Cqlsh - Fatal编程技术网

Cassandra 卡桑德拉的副本没有插入一行

Cassandra 卡桑德拉的副本没有插入一行,cassandra,cql,cqlsh,Cassandra,Cql,Cqlsh,在cassandra[cqlsh 5.0.1 | cassandra 2.2.0 | CQL规范3.3.0 |本机协议v4]中,我创建了下表 create table flotilla.events1 ( f1 int, f2 int, f3 int, f4 timestamp, f5 text, f6 text, f7 text, f8 int, f9 text, f10 double, f11 int,

在cassandra[cqlsh 5.0.1 | cassandra 2.2.0 | CQL规范3.3.0 |本机协议v4]中,我创建了下表

create table flotilla.events1 (
    f1 int,
    f2 int,
    f3 int,
    f4 timestamp,
    f5 text,
    f6 text,
    f7 text,
    f8 int,
    f9 text,
    f10 double,
    f11 int,
    primary key (f2, f1)
);
并尝试插入以下数据/tmp/b.csv:

使用以下命令:

copy flotilla.events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) from '/tmp/b.csv' with header=true;
卡桑德拉说:

8 rows imported in 0.550 seconds.
当我查看表格时:

SELECT * from flotilla.events1 ;

 f2 | f1 | f10 | f11 | f3 | f4 | f5 | f6 | f7 | f8 | f9
----+----+-----+-----+----+----+----+----+----+----+----

(0 rows)
没有一个错误。真是个黑客

但是,如果我使用insert INTO插入第一行:


这真是一个骇客?

与我一小时前的回答类似,为了让它发挥作用,我只需从您的CSV文件中删除所有单引号

f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11
1,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,242,242
2,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,8,8
3,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
4,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,1,1
5,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
6,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
7,751168360,0,2014-04-01T09:56:13.491,a,A,A,279,P,2.55,255
8,751168360,0,2014-04-01T09:56:13.491,a,A,A,279,P,0,0
然后,“复制”命令工作正常:

aploetz@cqlsh:stackoverflow> COPY events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) FROM '/home/aploetz/cassandra_stack/b.csv' WITH header=true;

8 rows imported in 0.627 seconds.
aploetz@cqlsh:stackoverflow> SELECT * FROM events1 ;

 f2        | f1 | f10  | f11 | f3 | f4                       | f5 | f6 | f7 | f8  | f9
-----------+----+------+-----+----+--------------------------+----+----+----+-----+----
 751168360 |  1 |  242 | 242 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  2 |    8 |   8 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  3 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  4 |    1 |   1 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  5 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  6 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  7 | 2.55 | 255 |  0 | 2014-04-01 09:56:13-0500 |  a |  A |  A | 279 |  P
 751168360 |  8 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  A |  A | 279 |  P

(8 rows)

删除你的单引号,然后它就会工作。

类似于我一小时前的回答,为了让它工作,我只需从你的CSV文件中删除所有单引号

f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11
1,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,242,242
2,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,8,8
3,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
4,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,1,1
5,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
6,751168360,0,2014-04-01T09:56:13.491,a,G,G,296,G,0,0
7,751168360,0,2014-04-01T09:56:13.491,a,A,A,279,P,2.55,255
8,751168360,0,2014-04-01T09:56:13.491,a,A,A,279,P,0,0
然后,“复制”命令工作正常:

aploetz@cqlsh:stackoverflow> COPY events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) FROM '/home/aploetz/cassandra_stack/b.csv' WITH header=true;

8 rows imported in 0.627 seconds.
aploetz@cqlsh:stackoverflow> SELECT * FROM events1 ;

 f2        | f1 | f10  | f11 | f3 | f4                       | f5 | f6 | f7 | f8  | f9
-----------+----+------+-----+----+--------------------------+----+----+----+-----+----
 751168360 |  1 |  242 | 242 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  2 |    8 |   8 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  3 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  4 |    1 |   1 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  5 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  6 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  G |  G | 296 |  G
 751168360 |  7 | 2.55 | 255 |  0 | 2014-04-01 09:56:13-0500 |  a |  A |  A | 279 |  P
 751168360 |  8 |    0 |   0 |  0 | 2014-04-01 09:56:13-0500 |  a |  A |  A | 279 |  P

(8 rows)

删除你的单引号,然后它就会工作。

我发布了一个额外的答案,因为最初的问题是导入驻留在压缩csv.gz文件中的数据:

f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11
1;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';242;242
2;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';8;8
3;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
4;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';1;1
5;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
6;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
7;751168360;0;'2014-04-01T09:56:13.491111';'a';'A';'A';279;'P';2.55;255
8;751168360;0;'2014-04-01T09:56:13.491111';'a';'A';'A';279;'P';0;0
仔细选择参数分隔符QUOTE HEADER可以导入数据而不会出现错误:

zcat /tmp/a.csv.gz | cqlsh -e "copy flotilla.events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) from STDIN WITH DELIMITER=';' and QUOTE='''' and header=true;"

然而,我仍然相信微秒.491111会导致错误,因为cassandra只能处理毫秒

我发布了一个额外的答案,因为最初的问题是导入驻留在压缩csv.gz文件中的数据:

f1;f2;f3;f4;f5;f6;f7;f8;f9;f10;f11
1;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';242;242
2;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';8;8
3;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
4;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';1;1
5;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
6;751168360;0;'2014-04-01T09:56:13.491111';'a';'G';'G';296;'G';0;0
7;751168360;0;'2014-04-01T09:56:13.491111';'a';'A';'A';279;'P';2.55;255
8;751168360;0;'2014-04-01T09:56:13.491111';'a';'A';'A';279;'P';0;0
仔细选择参数分隔符QUOTE HEADER可以导入数据而不会出现错误:

zcat /tmp/a.csv.gz | cqlsh -e "copy flotilla.events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) from STDIN WITH DELIMITER=';' and QUOTE='''' and header=true;"
然而,我仍然相信微秒.491111会导致错误,因为卡桑德拉只能处理微秒