向 Cassandra 中插入一条记录 table
Insert a record into Cassandra table
我创建了一个table,university_by_person,如下:
CREATE TABLE university_by_person (
person_name frozen<name>,
university_id uuid,
university_name text,
university_phone text,
university_address frozen<address>,
PRIMARY KEY ((person_name), university_id)
) WITH CLUSTERING ORDER BY (university_id ASC)
AND comment = 'Q1. Find universities(including university info) near a person';
而且我还自定义了TYPE名称和地址如下:
CREATE TYPE name (
first_name text,
last_name text
)
CREATE TYPE address (
street text,
city text,
state_or_province text,
postal_code text,
country text
)
但是,现在当我尝试向此 table 中插入一条记录并按下 ENTER 键时,cmd 提示仅返回“...”。似乎 cmd 认为我的命令没有完成?但我确实有一个';'在末尾。我怎么能在这里解决它?
我的插入命令:
INSERT INTO university_by_person
(person_name, university_id, university_name, university_phone, university_address)
VALUES (
{first_name: 'Meryl', last_name: 'Streep'},
e7ae5cf3-d358-4d99-b900-85902fda9bb0,
'University of Toronto',
'416-963-0086',
{street: '27 King's College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
);
问题是地址中 street
的值是一个包含单引号 ('
) 字符的字符串:
street: '27 King's College Cir'
cqlsh 中的 ...
行表示它需要更多输入,因为字符串过早地“终止”了。
要在字符串中使用撇号,您需要使用另一个单引号转义,因此它看起来像:
street: '27 King''s College Cir'
这是更正后的完整 CQL 语句:
INSERT INTO university_by_person
(person_name, university_id, university_name, university_phone, university_address)
VALUES (
{first_name: 'Meryl', last_name: 'Streep'},
e7ae5cf3-d358-4d99-b900-85902fda9bb0,
'University of Toronto',
'416-963-0086',
{street: '27 King''s College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
);
应该按预期执行。该列的值还应包括撇号:
cqlsh:Whosebug> SELECT university_address FROM university_by_person
WHERE person_name = {first_name: 'Meryl', last_name: 'Streep'};
university_address
------------------------------------------------------------------------------------------------------------------------------
{street: '27 King''s College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
有关更多信息和替代方案,请参阅 Escaping characters。干杯!
我创建了一个table,university_by_person,如下:
CREATE TABLE university_by_person (
person_name frozen<name>,
university_id uuid,
university_name text,
university_phone text,
university_address frozen<address>,
PRIMARY KEY ((person_name), university_id)
) WITH CLUSTERING ORDER BY (university_id ASC)
AND comment = 'Q1. Find universities(including university info) near a person';
而且我还自定义了TYPE名称和地址如下:
CREATE TYPE name (
first_name text,
last_name text
)
CREATE TYPE address (
street text,
city text,
state_or_province text,
postal_code text,
country text
)
但是,现在当我尝试向此 table 中插入一条记录并按下 ENTER 键时,cmd 提示仅返回“...”。似乎 cmd 认为我的命令没有完成?但我确实有一个';'在末尾。我怎么能在这里解决它?
我的插入命令:
INSERT INTO university_by_person
(person_name, university_id, university_name, university_phone, university_address)
VALUES (
{first_name: 'Meryl', last_name: 'Streep'},
e7ae5cf3-d358-4d99-b900-85902fda9bb0,
'University of Toronto',
'416-963-0086',
{street: '27 King's College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
);
问题是地址中 street
的值是一个包含单引号 ('
) 字符的字符串:
street: '27 King's College Cir'
cqlsh 中的 ...
行表示它需要更多输入,因为字符串过早地“终止”了。
要在字符串中使用撇号,您需要使用另一个单引号转义,因此它看起来像:
street: '27 King''s College Cir'
这是更正后的完整 CQL 语句:
INSERT INTO university_by_person
(person_name, university_id, university_name, university_phone, university_address)
VALUES (
{first_name: 'Meryl', last_name: 'Streep'},
e7ae5cf3-d358-4d99-b900-85902fda9bb0,
'University of Toronto',
'416-963-0086',
{street: '27 King''s College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
);
应该按预期执行。该列的值还应包括撇号:
cqlsh:Whosebug> SELECT university_address FROM university_by_person
WHERE person_name = {first_name: 'Meryl', last_name: 'Streep'};
university_address
------------------------------------------------------------------------------------------------------------------------------
{street: '27 King''s College Cir', city: 'Toronto', state_or_province: 'Ontario', postal_code: 'M5S 1A1', country: 'Canada'}
有关更多信息和替代方案,请参阅 Escaping characters。干杯!