2015-08-28 2 views
1

В Кассандре ([cqlsh 5.0.1 | Cassandra 2.2.0 | CQL spec 3.3.0 | Native protocol 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):

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 

следующим команда:

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

Cassandra говорит:

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:

insert into flotilla.events1 (f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11) values (1,751168360,0,'2014-04-01T09:56:13.123','a','G','G',296,'G',242,242) ; select * from flotilla.events1; 

f2  | f1 | f10 | f11 | f3 | f4      | f5 | f6 | f7 | f8 | f9 
-----------+----+-----+-----+----+--------------------------+----+----+----+-----+---- 
751168360 | 1 | 242 | 242 | 0 | 2014-04-01 09:56:13+0200 | a | G | G | 296 | G 

(1 rows) 

Что хак?

ответ

3

Как и я ответил на это question час назад, чтобы заставить это работать, я просто удалил все одинарные кавычки из вашего 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 

Затем команда COPY работала просто отлично:

[email protected]: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. 
[email protected]: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) 

Снимайте одиночные кавычки, а затем он должен работать.

1

Я отправляю дополнительный ответ, так как исходная задача была импортировать эти данные (который был, проживающих в сжатом 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 

тщательный отбор параметров (DELIMITER, 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 может обрабатывать только миллисекунды