登陆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