我是CQL的新学习者。 我正在使用docker env运行Cassandra。
以前,我有两个表(餐厅和检查表),其中分别插入了csv
和以下设置的数据:
由于CQL不支持join
方法,因此我需要将联接的数据集(JSON)重新插入到新表中(调用InspectionrestaurantNY)。
因此,我尝试创建InspectionrestaurantNY表:
然后,我有了jav
,它可以帮助我安装json
文件。
但是我得到了错误,并且我不知道我应该创建哪个表(InspectionrestaurantNY)设置来插入json
数据。
我运行了java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json
,它显示了以下错误:
我应该首先建立什么表设置以插入JSON数据?
如何解决JAVA错误?
非常感谢您。
答案 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