cassandra - 向 Cassandra 表中插入一条记录

标签 cassandra

我创建了一个表 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
)

但是,现在当我尝试向该表中插入一条记录并按 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:stackoverflow> 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 。干杯!

关于cassandra - 向 Cassandra 表中插入一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63108333/

相关文章:

postgresql - 用于大数据导入和快速查找的 SQL 或 noSQL 数据库?

apache-kafka - Spark Streaming scala 性能极慢

scala - Spark 1.5.1、Cassandra 连接器 1.5.0-M2、Cassandra 2.1、Scala 2.10、NoSuchMethodError Guava 依赖项

java - Cassandra - 写入错误。怎么解决呢?

cassandra - nodetool 修复 "SYSTEM"和 "OPSCENTER"键空间

Cassandra Upsert 不适用于每列

java - 使用 datastax 驱动程序检索有关 cassandra 集群数据中心的信息

database - 是否可以使用 Cassandra 作为 LRU 缓存

encryption - Cassandra 2.0.3 客户端到服务器 [TSocket 读取 0 字节] 错误

cassandra - 启用 CQL 二进制协议(protocol)会在 ubuntu 中抛出 YAMLException : Unable to find property - in DataStax 3. 0 安装