📜  Cassandra 中的 JSON 格式

📅  最后修改于: 2021-09-10 02:30:11             🧑  作者: Mango

在本文中,我们将讨论将数据插入表中的 JSON JavaScript Object Notation 格式,它很有用,并且以编程方式插入列及其值比使用 cqlsh 更实用。对于测试和验证查询,cqlsh 非常方便。

Cassandra 查询语言 (CQL) 支持 JSON 格式,其中数据作为字符串插入,但实际上存储为给定的数据类型值。

例如,如果 Id 具有 int 数据类型,则 id 的值将像“Id”:“101”一样插入,但实际上它将存储为 INT。让我们考虑一个表 student_registration,其中 s_id、s_name、s_city、s_email 是字段。

CREATE TABLE student_registration(
s_id int PRIMARY KEY, 
s_name text, 
s_city text, 
s_email text
); 

现在,我们将以 JSON 格式将数据插入到 student_registration 表中。我们来看一下。

INSERT INTO student_registration
JSON '{
"s_id" : "9001",
"s_name" : "Ashish",
"s_city" : "California",
"s_email": "a_json1@gmail.com"
}';


INSERT INTO student_registration
JSON '{
"s_id" : "9002",
"s_name" : "Ashish",
"s_email": "a_json1@gmail.com"
}' ;

INSERT INTO student_registration
JSON '{
"s_id" : "9003",
"s_name" : "Rana",
"s_email": "a_json2@gmail.com"
}' ; 

让我们使用以下 CQL 查询查看输出。

select * 
from student_registration; 

输出:

在这里,s_city 值没有使用 JSON 插入,因此默认情况下将插入 NULL 值。

嵌套 JSON:
让我们通过嵌套 JSON 的示例来理解,首先我们创建用户定义的类型 Permanent_address,其中包含 house_no、name、city、pin 是字段。

CREATE type permanent_address
( 
house_no int, 
name text, 
city text,
pin int 
); 

现在,我们正在创建用于注册的registration_form 表,其中包含student_id、name、registration_fees 和permanent_address 字段。

CREATE TABLE registration_form( 
"student_id" int  PRIMARY KEY, 
"name" text, 
"registration_fees" int, 
"permanent_address" list); 

现在,这里使用以下 CQL 查询将数据插入表中。

INSERT INTO registration_form("student_id", "name",  
                                   "registration_fees", 
                                   "permanent_address") 
VALUES (123, 'Ashish', 2500, 
 [{ house_no : 544, name : 'ashish', city : 'california', pin : 2019 },
  { house_no : 124, name : 'rana', city : 'delhi', pin : 2020}]) ; 

让我们使用以下 CQL 查询查看插入的数据。

select * 
from registration_form; 

输出:

toJson() 是用于转换 JSON字符串的JSON函数。我们来看一下。

select student_id, toJson(permanent_address) 
from registration_form; 

输出:

参考资料 – DataStax