登陆phoenix

登录phoenix的shell客户端,进入phoenix的目录,2181是zookeeper的端口号
./bin/sqlline.py kncloud02,kncloud03,kncloud04:2181

在phoenix中,默认情况下,库名,表名,字段名等会自动转换为大写,若要小写,使用双引号,如"ns1"。
注意:特别注意引号,总之很变态


注意 以下所有操作,前提都是Hbase中不存在库,表,然后能过phoenix以sql的方式来创建hbase中的库,表,记录等,至于 Hbase中已经存在的表,phoenix如何映射,有专门的章节来讲解

 

SCHEMA操作

创建schema(就是hbase中的namespace),就是数据库
create schema IF NOT EXISTS "ns1";

*************使用schema,执行后再创建表,增加记录等,否则都建在default数据库中了****************
USE "ns1";

删除schema
drop schema "ns1";

 

DDL语句使用

创建表
这里 定义的主键,就是hbase中的rowkey
CREATE TABLE IF NOT EXISTS "student"(
id VARCHAR NOT NULL primary key, 
name VARCHAR,
age VARCHAR,
date Date);

注意:这里state和city共同组成 行键rowkey
CREATE TABLE IF NOT EXISTS "table_2" (
      state CHAR(2) NOT NULL,
      city VARCHAR NOT NULL,
      population BIGINT
      CONSTRAINT my_pk PRIMARY KEY (state, city)
);

查看所有表格 (注意:后面没有分号)
!tables

phoenix中的表信息都存在SYSTEM.CATALOG表中,也可以通过下面的sql语句查看系统的表信息
select * from SYSTEM.CATALOG;

查看表的结构
!describe "student";

删除表
drop table "ns1"."student";

退出命名行
!quit

 


DML语句使用

表数据的增删改查
//添加

upsert into "student" (id,name,age,date) values('1003','wangwu','221','2020-9-18 22:50:15'); 
upsert into "student" (id,name,age,date) values('1004','chenmazi','222','2020-9-18 22:55:25');
//修改
upsert into "student" (id,name,age,date) values('1003','wangwu','111','2020-8-18 12:11:15');
select * from "student";
delete from "student" where id='1003';
select * from "student";

//插入
UPSERT INTO "table_2" (state, city, population) values ('A','01',00000);
UPSERT INTO "table_2" (state, city, population) values ('B','02',33333);
select * from "table_2";
//修改
UPSERT INTO "table_2" (state, city, population) values ('A','01',111111);
select * from "table_2";

注意:
1)upsert:表中的主键不存在就是插入,存在就是更新
2)where的字段值要加单引号 ' ', 字段名的小写是加双引号,别弄混了

//删除所有记录
delete from "table_2";
注意:Phoenix中不能使用truncate table tb;

对比Hbase中的表结构看一下,可以看到列族为0,表中定义的主键就是hbase中的rowkey


 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐