我想将列家族中的选定行复制到.csv文件中.copy命令可用于将列或整个表转储到没有where子句的文件.有没有办法在copy命令中使用where子句?
我想到的另一种方式是,
"插入table2()值(select * from table1 where <where_clause>);" 然后将table2转储到.csv,这也是不可能的.
任何帮助将非常感激.
我可以在cassandra中的多个列上创建二级索引吗?我可以这样做
在my_column_family上创建索引my_composite_index(id,name)
CQL抛出错误
:2:错误请求:第1:73行不匹配输入','期待')'
我的桌子看起来像这样
create table Notes(
user_id varchar,
real_time timestamp,
insertion_time timeuuid,
read boolean PRIMARY KEY (user_id,real_time,insertion_time)
);
create index read_index on Notes (read);
Run Code Online (Sandbox Code Playgroud)
我想更新所有的行与USER_ID ="XXX" ,而不指定所有聚类索引.
UPDATE Notes SET read = true where user_id = 'xxx'; // Says Error
Run Code Online (Sandbox Code Playgroud)
错误:message ="缺少必需的PRIMARY KEY部分real_time
我尝试过创建二级索引,但主键上不允许这样做.
我怎么解决这个问题?
我选择user_id作为主键,因为我希望能够做到这一点select * from Notes where user_id = 'xxx'.
最初我开始学习Cassandra,因为动态栏引起了我的注意.当我开始学习更多内容时,我了解到复合主键优先于动态列,而Cassandra正在转向基于模式(Schema是可选的,不是强制性的,但建议使用).在cql3中,它是强制性的,我读cql3是cassandra中新应用程序的最佳方法.
这是我面临一个有趣问题的地方.我正在阅读一个特定的幻灯片(Mysql vs Casssandra) - http://lanyrd.com/2012/austin-mysql-meetup-january/spdrx/(跳转到31幻灯片),讨论欺诈检测用例.
"在欺诈检测中为了计算风险,通常需要知道有关帐户的所有电子邮件,目的地,来源,设备,地点,电子邮件等等."
它解释了我们如何在关系世界中维护电子邮件,目的地,起源等的单独表格,以及使用动态列密钥和值在cassandra世界中是多么容易.(31-34张幻灯片).
既然动态列键和值不鼓励,我们怎样才能解决这个问题呢?我们应该为每封电子邮件,目的地等维护单独的列系列吗?那它与关系世界有什么不同呢?它只是关于可扩展性吗?我们还能继续采用架构方法吗?这是一个黄金法则"架构是可选的,建议但不是强制性的?"
谢谢
在CQL3之前,可以插入任意列,例如由日期命名的列:
cqlsh:test>CREATE TABLE seen_ships (day text PRIMARY KEY)
WITH comparator=timestamp AND default_validation=text;
cqlsh:test>INSERT INTO seen_ships (day, '2013-02-02 00:08:22')
VALUES ('Tuesday', 'Sunrise');
Run Code Online (Sandbox Code Playgroud)
根据这篇文章,CQL3似乎有所不同.是否仍然可以插入任意列?这是我失败的尝试:
cqlsh:test>CREATE TABLE seen_ships (
day text,
time_seen timestamp,
shipname text,
PRIMARY KEY (day, time_seen)
);
cqlsh:test>INSERT INTO seen_ships (day, 'foo') VALUES ('Tuesday', 'bar');
Run Code Online (Sandbox Code Playgroud)
我来了 Bad Request: line 1:29 no viable alternative at input 'foo'
所以我尝试了一个稍微不同的表,因为这可能是复合键的限制:
cqlsh:test>CREATE TABLE seen_ships ( day text PRIMARY KEY );
cqlsh:test>INSERT INTO seen_ships (day, 'foo') VALUES ('Tuesday', 'bar');
Run Code Online (Sandbox Code Playgroud)
再次与 Bad Request: line 1:29 …
如何使用CQL3引入一系列复合列?
考虑以下:
CREATE TABLE Stuff (
a int,
b text,
c text,
d text,
PRIMARY KEY (a,b,c)
);
Run Code Online (Sandbox Code Playgroud)
在Cassandra中,这实际上有效地创建了一个具有整数行(值为a)和CompositeColumns的ColumnFamily,其中包含b和c的值以及文字字符串'd'.当然,这一切都被CQL3所掩盖,因此我们会认为我们正在插入单独的数据库行......但我离题了.
并考虑以下一组输入:
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','P','whatever0');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','Q','whatever1');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','R','whatever2');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','S','whatever3');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'A','T','whatever4');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','P','whatever5');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','Q','whatever6');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','R','whatever7');
INSERT INTO Stuff (a,b,c,d) VALUES (1,'B','S','whatever8');
INSERT INTO Stuff (a,b,c,d) …Run Code Online (Sandbox Code Playgroud) 我试图执行以下CQL 3语句
CREATE TABLE summary (
id uuid,
"client" bigint,
"campaign" text,
"unit" bigint,
"view" counter,
PRIMARY KEY ("client", "campaign", "unit"));
Run Code Online (Sandbox Code Playgroud)
我得到的错误是我无法在非计数器列族上创建计数器列.
有任何想法吗?
我正在编写一个应用程序,我需要能够判断插入和更新是否成功.我正在使用"INSERT ... IF NOT EXISTS"来获得轻量级事务行为并注意到从execute返回的结果集包含一行包含更新的数据和一个可以查询的"[applied]"列.那样太好了.但是我有一个返回空ResultSet的更新语句.似乎更新成功,但我想要一种程序化的方法来验证.
澄清:
我打开了一些由我的突变返回的结果集的记录.我发现"INSERT ... IF NOT EXIST"返回一个带有名为"[applied]"的布尔列的ResultSet.如果"[applied]"为false,则还返回已退出的行.
使用UPDATE,我总是看到一个空的ResultSet.
所以我有两个问题:
我上周刚刚参加了Cassandra的速成课程,从Thrift API到CQL到了SuperColumns,我不应该使用它们和用户复合键.
我现在正在尝试CQL3,看起来我不能再插入未在架构中定义的列,或者看到那些列中的列 select *
我错过了一些在CQL3中启用它的选项,或者它是否希望我定义模式中的每一列(忽略宽,灵活行的目的,imho).
我是NoSQL数据库的新手,刚刚开始使用apache Cassandra.我在"empno"列上创建了一个带有主键的简单表"emp".这是一个简单的表,因为我们总是使用Oracle的默认scott模式.
现在我使用COPY命令和已发出的查询加载数据,Select * from emp order by empno但我很惊讶CQL不允许按empno列排序(这是PK).此外,当我使用Where条件时,它不允许在empno列上进行任何不等式操作(它表示只允许EQ或IN条件).它也没有允许任何其他列的Where和Order by,因为它们没有在PK中使用,并且没有索引.
如果我想empno在表中保持唯一并希望查询结果按排序顺序,有人可以帮助我该怎么办empno?
(我的版本是:
cqlsh:demodb> show version
[cqlsh 5.0.1 | Cassandra 2.2.0 | CQL spec 3.3.0 | Native protocol v4]
)