在本文中,我们将讨论将数据插入表中的 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