Phoenix-一些笔记

sqlline.py使用

连接

1
./sqlline.py localhost

常用命令

显示所有表

!tables

查看表结构

!describe 表名

退出

!quit

查看帮助

!help

建表语句

1
create table userinfo_c(id varchar primary key,name varchar);

与Hbase关联

先到 Hbase建表

1
create 'patient_test','info'

再创建phoenix表

1
create table "patient_test"("id" varchar primary key,"info"."name" varchar, "info"."id_number" varchar, "info"."phone" varchar, "info"."sex" varchar, "info"."file_number" varchar, "info"."empi" varchar);

注意要用 双引号括起来所有的字段和表名,不然关联不了

在 phoenix 上插入一条数据

1
2
0: jdbc:phoenix:> upsert into "patient_test" values( '1000' ,'王五','1234','12345','1','0001','');
1 row affected (0.097 seconds)

到 hbase上查询

1
2
3
4
5
6
7
8
hbase(main):009:0> scan 'patient_test'
ROW COLUMN+CELL
1000 column=info:_0, timestamp=1567564026903, value=x
1000 column=info:file_number, timestamp=1567564026903, value=0001
1000 column=info:id_number, timestamp=1567564026903, value=1234
1000 column=info:name, timestamp=1567564026903, value=\xE7\x8E\x8B\xE4\xBA\x94
1000 column=info:phone, timestamp=1567564026903, value=12345
1000 column=info:sex, timestamp=1567564026903, value=\x80\x00\x00\x00\x00\x00\x00\x01

Hbase

1
put 'patient_test', '1000','info:sex',1

bigint 类型字段会存在 hbase 插入的数据 phoneix读取不了,phoenix插入的数据 hbase读取不正常

1
2
3
0: jdbc:phoenix:> select * from "patient_test";
Error: ERROR 201 (22000): Illegal data. Expected length of at least 8 bytes, but had 6 (state=22000,code=201)
java.sql.SQLException: ERROR 201 (22000): Illegal data. Expected length of at least 8 bytes, but had 6

所以最好所有都用 varchar 存

修改表字段

先删除原表字段再使用新的类型添加回去

1
2
3
4
5
ALTER TABLE my_schema.my_table ADD d.dept_id char(10) VERSIONS=10
ALTER TABLE my_table ADD dept_name char(50), parent_id char(15) null primary key
ALTER TABLE my_table DROP COLUMN d.dept_id, parent_id;
ALTER VIEW my_view DROP COLUMN new_col;
ALTER TABLE my_table SET IMMUTABLE_ROWS=true,DISABLE_WAL=true;
1
2
ALTER TABLE my_schema.my_table DROP COLUMN col;
ALTER TABLE my_schema.my_table ADD col varchar;
0%
隐藏