我是Cassandra cql的新手(cqlsh 4.1.1,Cassandra 2.0.8.39,CQL规范3.1.1,Thrift协议19.39.0) - 使用cql COPY命令从CSV格式的文件中获取表格,我得到了以下错误:
Bad Request: unable to coerce '2012/11/11' to a formatted date (long)
。
如何使用cql
更改列,以便它接受CSV
文件中的日期?
答案 0 :(得分:8)
正如Brian所说,要使CQL查询运行,需遵循CQL时间戳类型。有时看起来确实很奇怪!几周前我发现同样的问题,日期时插入如下:
INSERT INTO my_table (id,lastvisitdate) VALUES (1682221,'2012-03-25 02:26:04');
我收到了这个错误:错误请求:无法强迫' 2012-03-25 02:26:04'到格式化的日期(长)! mmmm ......日期时间似乎是正确的!
经过多次尝试和疯狂之前,我在最后添加了Z,Z代表Zulu时间,也是UTC和GMT:
INSERT INTO my_table (id,lastvisitdate) VALUES (1682221,'2012-03-25 02:26:04Z');
Yessss!有用 !所以不要忘记你的日期时间值的时区,它可能会有所帮助! ; - )
答案 1 :(得分:3)
在CQLSH中没有直接的方法可以做到这一点。
可以强制使用某组字符串日期格式。有关以下示例,请参阅CQL Timestamp type文档页面:
yyyy-mm-dd HH:mm
yyyy-mm-dd HH:mm:ss
yyyy-mm-dd HH:mmZ
yyyy-mm-dd HH:mm:ssZ
yyyy-mm-dd'T'HH:mm
yyyy-mm-dd'T'HH:mmZ
yyyy-mm-dd'T'HH:mm:ss
yyyy-mm-dd'T'HH:mm:ssZ
yyyy-mm-dd
yyyy-mm-ddZ
作为一种变通方法,您可以修改CSV文件以调整日期格式,然后导入它。 (在你的情况下,它可能就像“yyyy / mm / dd” - >“yyyy-mm-dd”一样简单。)