如何在CQL中使用JAVA创建表并插入json数据?

时间:2019-04-25 14:05:09

标签: java json cassandra cql

我是CQL的新学习者。 我正在使用docker env运行Cassandra。

以前,我有两个表(餐厅和检查表),其中分别插入了csv和以下设置的数据:

enter image description here

由于CQL不支持join方法,因此我需要将联接的数据集(JSON)重新插入到新表中(调用InspectionrestaurantNY)。

因此,我尝试创建InspectionrestaurantNY表: enter image description here

然后,我有了jav,它可以帮助我安装json文件。 但是我得到了错误,并且我不知道我应该创建哪个表(InspectionrestaurantNY)设置来插入json数据。

我运行了java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json,它显示了以下错误:

enter image description here

然后,我的json文件的存储方式如下: enter image description here enter image description here enter image description here enter image description here

我应该首先建立什么表设置以插入JSON数据?

如何解决JAVA错误?

非常感谢您。

2 个答案:

答案 0 :(得分:0)

问题在于,Cassandra在处理名称时区分大小写,您使用驼峰大小写InspectionsRestaurantsNY创建了它,但是您试图将其插入小写inspectionsrestaurantsny

最好使用小写字母,因为使用cqlsh时,如果有大写字母,则需要用双引号将其引起来。

答案 1 :(得分:0)

似乎您在运行jar插入JSON时使用了错误的表名。您共享的命令是

  

java -jar JSonFile2Cassandra.jar-主机192.168.99.101-端口3000   -keyspace RestaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json

应该不是

  

java -jar JSonFile2Cassandra.jar-主机192.168.99.101-端口3000   -keyspace RestaurantsNY -columnFamily InspectionsRestaurantsNY -file InspectionsRestaurantsNY.json

即在上述命令中为-columnFamily参数使用正确的表名 InspectionsRestaurantsNY

同样最好不要使用驼峰式大小写约定,因为CQL标识符名称不区分大小写。如果您确实想要区分大小写的名称,则应将名称用双引号引起来。如果不使用双引号,则Cassandra会将名称混合大小写转换为小写。但是在上面的查询中,我认为这不是错误的原因。我认为这是由于列姓氏错误所致。

在此处检查混合案例名称 https://docs.datastax.com/en/cql/3.3/cql/cql_reference/ucase-lcase_r.html