Phoenix Shell 操作

DDL

创建表

CREATE TABLE IF NOT EXISTS 表名 (
   ROWKEY名称 数据类型 PRIMARY KEY
	列蔟名.列名1 数据类型 NOT NULL,
	列蔟名.列名2 数据类型 NOT NULL,
	列蔟名.列名3 数据类型
);

注:

  • 创建表时,必须指定主键作为Rowkey,主键列不能加列族
  • 在HBase中,如果在列蔟、列名没有添加双引号。Phoenix会自动转换为大写。

查看表

!desc 表名

删除表

drop table if exists 表名;

DML

插入数据

在Phoenix中,插入并不是使用insert来实现的。而是 「upsert 」命令。它的功能为insert + update,与HBase中的put相对应。如果不存在则插入,否则更新。

列表是可选的,如果不存在,值将按模式中声明的顺序映射到列。这些值必须计算为常量。

upsert into 表名(列蔟列名, xxxx, ) VALUES(XXX, XXX, XXX)

更新数据

在Phoenix中,更新数据也是使用UPSERT。语法格式如下:

UPSERT INTO 表名(列名, …) VALUES(对应的值, …);

根据ID删除数据

DELETE FROM 表名 WHERE "id" = '000001';

DQL

查询数据

查询所有数据:
SELECT * FROM 表名;

根据ID查询数据:
SELECT * FROM 表名 where 'id'=xxx;

分页查询

使用limit和offset可以快速进行分页。
limit表示每页多少条记录,offset表示从第几条记录开始查起。

select * from 表名 limit xx offset xx;

预分区表

ROWKEY预分区

按照用户ID来分区,一共4个分区。并指定数据的压缩格式为GZ。

create table if not exists 表名(
     ROWKEY名称 数据类型 PRIMARY KEY,
	列蔟名.列名1 数据类型 NOT NULL,
	列蔟名.列名2 数据类型 NOT NULL,
	列蔟名.列名3 数据类型
) 
CONPRESSION='GZ'
SPLIT ON ('3','5','7');

加盐指定数量分区

create table if not exists 表名(
     ROWKEY名称 数据类型 PRIMARY KEY,
	列蔟名.列名1 数据类型 NOT NULL,
	列蔟名.列名2 数据类型 NOT NULL,
	列蔟名.列名3 数据类型
) CONPRESSION='压缩格式', SALT_BUCKETS=分区数;

案例

将之前的订单数据集使用Phoenix来进行增删改查的操作

数据
在这里插入图片描述
说明
在这里插入图片描述
代码

  1. 创建ORDER_DTL
create table if not exists ORDER_DTL(
    ID varchar primary key,
    C1.STATUS varchar,
    C1.PAY_MONEY float,
    C1.PAYWAY integer,
    C1.USER_ID varchar,
    C1.OPERATION_DATE varchar,
    C1.CATEGORY varchar
);

注:

  • 默认ORDER_DTL存储在Hbase的default中
  • 若Hbase中已存在会自动关联
  1. 查看ORDER_DTL
    !desc order_info;

  2. 删除ORDER_DTL
    drop table if exists ORDER_DTL;

  3. 向ORDER_DTL插入数据

UPSERT INTO "ORDER_DTL" VALUES('000002','已提交',4070,1,'4944191','2020-04-25 12:09:16','手机;');
UPSERT INTO "ORDER_DTL" VALUES('000003','已完成',4350,1,'1625615','2020-04-25 12:09:37','家用电器;;电脑;');
UPSERT INTO "ORDER_DTL" VALUES('000004','已提交',6370,3,'3919700','2020-04-25 12:09:39','男装;男鞋;');
UPSERT INTO "ORDER_DTL" VALUES('000005','已付款',6370,3,'3919700','2020-04-25 12:09:44','男装;男鞋;');
UPSERT INTO "ORDER_DTL" VALUES('000006','已提交',9380,1,'2993700','2020-04-25 12:09:41','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000007','已付款',9380,1,'2993700','2020-04-25 12:09:46','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000008','已完成',6400,2,'5037058','2020-04-25 12:10:13','数码;女装;');
UPSERT INTO "ORDER_DTL" VALUES('000009','已付款',280,1,'3018827','2020-04-25 12:09:53','男鞋;汽车;');
UPSERT INTO "ORDER_DTL" VALUES('000010','已完成',5600,1,'6489579','2020-04-25 12:08:55','食品;家用电器;');
UPSERT INTO "ORDER_DTL" VALUES('000011','已付款',5600,1,'6489579','2020-04-25 12:09:00','食品;家用电器;');
UPSERT INTO "ORDER_DTL" VALUES('000012','已提交',8340,2,'2948003','2020-04-25 12:09:26','男装;男鞋;');
UPSERT INTO "ORDER_DTL" VALUES('000013','已付款',8340,2,'2948003','2020-04-25 12:09:30','男装;男鞋;');
UPSERT INTO "ORDER_DTL" VALUES('000014','已提交',7060,2,'2092774','2020-04-25 12:09:38','酒店;旅游;');
UPSERT INTO "ORDER_DTL" VALUES('000015','已提交',640,3,'7152356','2020-04-25 12:09:49','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000016','已付款',9410,3,'7152356','2020-04-25 12:10:01','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000017','已提交',9390,3,'8237476','2020-04-25 12:10:08','男鞋;汽车;');
UPSERT INTO "ORDER_DTL" VALUES('000018','已提交',7490,2,'7813118','2020-04-25 12:09:05','机票;文娱;');
UPSERT INTO "ORDER_DTL" VALUES('000019','已付款',7490,2,'7813118','2020-04-25 12:09:06','机票;文娱;');
UPSERT INTO "ORDER_DTL" VALUES('000020','已付款',5360,2,'5301038','2020-04-25 12:08:50','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000021','已提交',5360,2,'5301038','2020-04-25 12:08:53','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000022','已取消',5360,2,'5301038','2020-04-25 12:08:58','维修;手机;');
UPSERT INTO "ORDER_DTL" VALUES('000023','已付款',6490,0,'3141181','2020-04-25 12:09:22','食品;家用电器;');
UPSERT INTO "ORDER_DTL" VALUES('000024','已付款',3820,1,'9054826','2020-04-25 12:10:04','家用电器;;电脑;');
UPSERT INTO "ORDER_DTL" VALUES('000025','已提交',4650,2,'5837271','2020-04-25 12:08:52','机票;文娱;');
UPSERT INTO "ORDER_DTL" VALUES('000026','已付款',4650,2,'5837271','2020-04-25 12:08:57','机票;文娱;');
  1. 查询数据
SELECT * FROM ORDER_DTL;
  1. 更新数据
将ID为'000002'的订单状态修改为已付款。
UPSERT INTO ORDER_DTL(ID, C1.status) VALUES ('000002', '已付款');

根据id查询数据:
select * from ORDER_DTL where ID = '000002';

在这里插入图片描述

  1. 根据ID删除数据
将ORDER_DTL中ID为000002的数据删除:
delete from ORDER_DTL where ID = '000002';
  1. 分页查询
从第10条开始查询10条数据:
select * from ORDER_DTL limit 10 offset 10;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据老人家i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值