CrateDB的官方文档位于 https://crate.io/docs/crate/reference/en/latest/ ,对整体结构、配置参数以及最佳实践等讲的都很好,个人认为是我看过的讲的最清楚的官方文档之一(也可能是我比较喜欢这种风格的文档,我很喜欢类似于kafka、hbase的这种官方文档,但有人就觉得接受不能),所以推荐有想入手看英文文档的朋友可以看一下。
如果只想上手使用,想快速熟悉SQL语句,可以直接看SQL页面,对着你想用的语法ctrl+F即可:https://crate.io/docs/crate/reference/en/latest/sql/index.html ,如果还没有执行SQL的shell,可以看一下我的搭建部署的那篇博客,那里面有搭建单节点,下载使用client的详细步骤。
下面会按照常规使用的顺序介绍CrateDB常用命令:
创建用户:CREATE USER root with(password='123456');
是的,CrateDB并不会自动创建root账户,root也并不算保留关键字,你可以自己创建一个root账户,但别像我这样弄个root 123456啥的。
赋予权限:GRANT ALL PRIVILEGES TO root;
创建table: create table test3(id int, name string, attr1 geo_point, attr2 geo_shape);
插入数据:insert into test3 values(0, 'hello', [1.0,2.0], 'LINESTRING(2.0 4.0, 2.0 8.0)');
查询数据: select * from test3;
更新数据:update test3 set id = id+1;
删除数据:delete from test3 where id<3;
删除数据表:drop table test3;
清空数据表:truncate table test3;
group by: select sum(id) as total from test3 group by name;
order by: select distinct id from test3 order by id;
上传blob文件之前首先需要创建一个关联的blob表:
create blob table tablename clustered into 3 shards with (number_of_replicas=1);
然后需要计算sha1值并结合sha1值和关联的blob表上传:
shasum 1.pdf
curl -u name:passwd -isSX PUT '127.0.0.1:4200/_blobs/blobtablename/sha1val' --data-binary "@./1.pdf"
将命令中的用户名密码,sha1值sha1val,blobtablename,data路径替换为实际路径
总体来说,Create的语法类似于postgresql,但并不完全兼容,比如exists语法就不能支持; 空间函数会少很多等等。说实话,去改sql层的语法对于CreateDB并不容易,首先sql parser这一层用的是antlr,这个就需要一定的学习成本;另外analyze的时候大量用了guice做依赖注入,初学者想要迅速上手还是有一点点难度的;再之后每个类型的statement都有分发成ExecutionPhase的逻辑,这就需要对CreateDB底层分发逻辑有一些研究了,有想实际应用、进行二次开发的可以一起交流。