Phoenix 對HBASE表操作
技術標籤:HBase
https://www.yuque.com/docs/share/c0b81507-2318-48a7-a22c-2278b0e82ab9?# 《01.對HBase表操作》
01.對HBase表操作
hbase中沒有表,希望在phoneix中建表,在phoneix中使用SQL向hbase表中插入資料
顯示所有的表
Phoenix shell查詢:
!tables 或者是 !table
如果是用第三方客戶端的話,比如說Squirrel工具,是沒有!table功能的,
需要注意,這個可能會出現兩個不同的庫裡面有相同的表名,最後查詢的時候就查詢出一個表名.
select distinct TABLE_NAME from SYSTEM."CATALOG"
建立表
建立表的時候如果不定義列族的話,那麼預設就是0號列族
CREATE TABLE IF NOT EXISTS "ns1"."us_population" (
state CHAR(2) NOT NULL,
city VARCHAR NOT NULL,
info.population BIGINT
CONSTRAINT my_pk PRIMARY KEY (state, city)) column_encoded_bytes= 0;
column_encoded_bytes=0意思是不讓資料編號,這樣Hbase就能看到資料
你在建立表的時候HBase會自動給表名變成全部大寫,如果你不想這樣,你可以給表名用雙引號括起來,這樣表名就不會自動大寫了.
如果你想指定庫名你可以在表名前面追加,比如說 上面建表語句 ns1就是資料庫名.
**
說明:
**
1.char型別必須新增長度限制
2.varchar 可以不用長度限制
3.主鍵對映到 HBase 中會成為 Rowkey. 如果有多個主鍵(聯合主鍵), 會把多個主鍵的值拼成 rowkey
4.在 Phoenix 中, 預設會把表名,欄位名等自動轉換成大寫. 如果要使用小寫, 需要把他們用雙引號括起來.
不加的話,預設就是大寫:
插入記錄
Phoenix沒有insert和update, 而upsert是Phoenix是insert和update的結合,
插入的時候,如果你表名都是小寫的話,那麼你需要給表名加雙引號,不然表名會自動轉成大寫的
upsert into “us_population”values(‘IL’,‘Chicago’,2842518);
插入之前先看你當前使用的什麼資料庫
你可以在插入的時候指定資料庫
upsert into “ns1”.“us_population”values(‘IL’,‘Chicago’,2842518);
upsert into "ns1"."us_population" values('NY','NewYork',8143197);
upsert into "ns1"."us_population" values('CA','Los Angeles',3844829);
upsert into "ns1"."us_population" values('IL','Chicago',2842518);
select * from "ns1"."us_population"
查詢指定表
如果你是小寫的話 ,需要用雙引號把表名括起來.
select * from "ns1"."us_population"
# 根據條件查詢
select * from "ns1"."us_population" where state = 'NY'
刪除指定記錄
如果你是小寫的話 ,需要用雙引號把表名括起來.
刪除 state為 NY的資料
delete from "ns1"."us_population" where state='NY';
刪除整個表
如果你是小寫的話 ,需要用雙引號把表名括起來.
drop table "ns1"."us_population"
退出命令
Phoenix shell:
! quit