我可以看到cassandra中copy-from命令有一个奇怪的问题,它带有datetime值。
我的时区和服务器的时区相同。国际标准时间(gmt+5:30)
首先,我尝试使用insert查询插入一个值。
INSERT INTO activity (home_id, datetime, event, code_used) VALUES ('H01474777', '2014-05-21 07:32:16', 'alarm set', '5599');
它给了我下面一排。
home_id | datetime | code_used | event
-----------+---------------------------------+-----------+-----------
H01474777 | 2014-05-21 02:02:16.000000+0000 | 5599 | alarm set
在这里,Cassandra通过去掉+5:30来显示时间值(以gmt为单位)
但是当我试图通过copy from命令插入下面的时,你可以看到它在显示gmt值时增加了+5:30,就像在添加行时增加了11个小时。请分别参阅下面的文件、查询和输出。
home_id|datetime|event|code_used
H02257222|2014-05-21 05:29:47|alarm set|1566
H01474777|2014-05-21 07:32:16|alarm set|5599
查询:
COPY activity (home_id, datetime, event, code_used) FROM '/home/cass/events.csv' WITH HEADER = TRUE AND DELIMITER = '|';
结果:
home_id | datetime | code_used | event
-----------+---------------------------------+-----------+-----------
H01474777 | 2014-05-21 13:02:16.000000+0000 | 5599 | alarm set
H01474777 | 2014-05-21 02:02:16.000000+0000 | 5599 | alarm set --Old row from insert query.
H02257222 | 2014-05-21 10:59:47.000000+0000 | 1566 | alarm set
这里的前2行是相同的数据,表的前2列是主键,但是仍然创建了另一行,因为应该只有2行。
1条答案
按热度按时间nbewdwxp1#
我可以复制你提到的场景。
我的服务器时区
EST
.我运行了您提供的insert,并使用您提供的文件通过copy命令加载数据
在文件中,您没有提到datetime列的任何时区。所以它把局部区域作为它的区域。我的情况是est so-0500,你的情况是ist so+0530
你的文件会像
如果你修改你的csv文件如下。那么您将只看到h01474777的一行。
希望这有帮助!如果你有任何问题,请告诉我。