在本文中,我们将讨论 BATCH 语句、BATCH 语句的好处和误用,以及如何在 Cassandra 查询语言 (CQL) 支持的 Cassandra 中的单个和多个分区中使用 BATCH 语句。让我们一一讨论。
我们可以在单个和多个分区中使用 BATCH 语句,以确保两个操作的原子性。
所以,让我们举个例子。
首先,我们创建一个名为 bank_emp_data 的表,其中包含 Id、Name、emp_start_date、emp_end_date 字段。我们来看一下。
CREATE TABLE bank_emp_data(
E_id int,
Name text,
emp_start_date date,
emp_end_date date,
PRIMARY KEY (E_id, Name)
);
现在,我们将在不使用 BATCH 语句的情况下将数据写入 bank_emp_data 表。我们来看一下。
INSERT INTO bank_emp_data(E_id, Name, emp_start_date, emp_end_date)
VALUES (1005, 'Ashish', '2019-12-05', '2025-12-05');
INSERT INTO bank_emp_data(E_id, Name, emp_start_date)
VALUES (1006, 'Rana', '2019-12-05');
INSERT INTO bank_emp_data(E_id, Name, emp_end_date)
VALUES (1007, 'shiv', '2020-12-05');
要查看输出,请使用以下 CQL 查询。
Select *
From bank_emp_data;
输出:
现在,使用下面给出的以下 CQL 查询更新 bank_emp_data 表中的现有行。
Update bank_emp_data set emp_start_date = '2019-12-05'
where E_id = 1007 and Name= 'shiv';
要查看更新的行,请使用以下 CQL 查询。
Select *
from bank_emp_data;
输出:
现在,我们在这里使用 BATCH 语句,它也展示了我们如何很好地使用 BATCH 语句。我们来看一下。
BEGIN BATCH
INSERT INTO bank_emp_data(E_id, Name, emp_start_date, emp_end_date)
VALUES (1005, 'Ashish', '2019-12-05', '2025-12-05');
INSERT INTO bank_emp_data(E_id, Name, emp_start_date)
VALUES (1006, 'Rana', '2019-12-05');
INSERT INTO bank_emp_data(E_id, Name, emp_end_date)
VALUES (1007, 'shiv', '2020-12-05');
Update bank_emp_data set emp_start_date = '2019-12-05'
where E_id = 1007 and Name= 'shiv';
APPLY BATCH;
现在,让我们使用 BATCH 语句查看 bank_emp_data 的输出。
Select *
from bank_emp_data;
多分区批处理:
我们可以使用 BATCH 语句将数据写入不同的表。
让我们通过一个例子来理解。
表: Emp_data
create table Emp_data(
E_id int primary key,
Name text,
city text
);
表: Emp_data_copy
create table Emp_data_copy(
Name text primary key,
E_id int
);
现在,我们使用 BATCH 将数据插入到不同的表中。
BEGIN BATCH
INSERT INTO Emp_data (E_id, Name, city)
VALUES (101, 'Ashish', 'california');
INSERT INTO Emp_data_copy (Name, E_id)
VALUES ('Ashish', 101);
APPLY BATCH;
现在,让我们看看 Emp_data 表的输出。
SELECT *
FROM Emp_data;
输出:
现在,让我们看看 Emp_data_copy 表的输出。
SELECT *
FROM Emp_data_copy;
输出: