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

How can I create the Table and insert the json data by using JAVA in CQL?

我是CQL的新手。 我正在使用 docker env 到 运行 Cassandra。

在之前,我有两个 tables(restau运行ts 和 Inspection)通过 csv 和以下设置插入数据:

由于 CQL 不支持 join 方法,我需要 re-insert 连接数据集 (JSON) 到一个新的 table(调用 Inspectionrestau运行纽约).

因此,我尝试创建 Inspectionrestau运行tNY table:

然后,我有 jav 帮助我安装 json 文件。 但是我得到了错误,我不知道我应该创建什么 table(Inspectionrestau运行tNY) 设置来插入 json 数据。

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

而且,我的 json 文件是这样存储的:

我应该先建立什么 table 设置来插入 JSON 数据?

如何解决 JAVA 错误?

非常感谢。

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

名字最好是小写的,因为当你使用cqlsh时,如果有大写的名字,你需要用双引号括起来。

当 运行 jar 插入 JSON 时,您似乎使用了错误的 table 名称。您分享的命令是

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json

不应该是

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurantsNY -file InspectionsRestaurantsNY.json

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

另外,最好不要使用驼峰式大小写约定,因为 CQL 标识符名称不区分大小写。如果您真的想要区分大小写的名称,那么您应该将名称用双引号引起来。如果不使用双引号,那么 Cassandra 会将混合大小写的名称转换为小写。但在上面的查询中,我认为这不是错误的原因。我认为这是由于错误的列族名称。

在这里查看混合大小写的名称 https://docs.datastax.com/en/cql/3.3/cql/cql_reference/ucase-lcase_r.html