Sqlline接口介绍
可以直接使用sqlline.py在服务端对HBase进行SQL操作。Phoenix的sqlline接口与开源社区保持一致,请参见http://phoenix.apache.org/。
Sqlline常用语法见表1,常用函数见表2,命令行使用可以参考Phoenix命令行操作介绍章节。
命令 |
描述 |
示例 |
---|---|---|
CREATE TABLE |
创建表。 |
CREATE TABLE MY_TABLE(id BIGINT not null primary key, name VARCHAR); |
ALTER |
修改表/视图。 |
ALTER TABLE MY_TABLE DROP COLUMN name; |
DROP TABLE |
删除表。 |
DROP TABLE MY_TABLE; |
UPSERT VALUES |
插入/修改数据。 |
UPSERT INTO MY_TABLE VALUES(1,'abc'); |
SELECT |
查询数据。 |
SELECT * FROM MY_TABLE; |
CREATE INDEX |
创建全局索引。 |
CREATE INDEX MY_IDX ON MY_TABLE(name); |
CREATE LOCAL INDEX |
创建局部索引。 |
CREATE LOCAL INDEX MY_LOCAL_IDX ON MY_TABLE(id,name); |
ALTER INDEX |
修改索引状态。 |
ALTER INDEX MY_IDX ON MY_TABLE DISABLE; |
DROP INDEX |
删除索引。 |
DROP INDEX MY_IDX ON MY_TABLE; |
EXPLAIN |
显示执行计划。 |
EXPLAIN SELECT name FROM MY_TABLE; |
CREATE SEQUENCE |
创建序列。 |
CREATE SEQUENCE MY_SEQUENCE; |
DROP SEQUENCE |
删除序列。 |
DROP SEQUENCE MY_SEQUENCE; |
CREATE VIEW |
创建视图。 |
CREATE VIEW MY_VIEW AS SELECT * FROM MY_TABLE; |
DROP VIEW |
删除视图。 |
DROP VIEW MY_VIEW; |
CREATE SCHEMA |
创建SCHEMA。 |
CREATE SCHEMA MY_SCHEMA; |
USE |
修改默认SCHEMA。 |
USE MY_SCHEMA; |
DROP SCHEMA |
删除SCHEMA。 |
DROP SCHEMA MY_SCHEMA; |
函数类型 |
函数 |
描述 |
示例 |
---|---|---|---|
字符串 |
SUBSTR |
字符串截取。 |
SUBSTR('[Hello]', 2, 5) |
INSTR |
查询子串位置。 |
INSTR('Hello World', 'World') |
|
TRIM |
去除前后空格。 |
TRIM(' Hello ') |
|
LTRIM |
去除左空格。 |
LTRIM(' Hello') |
|
RTRIM |
去除右空格。 |
RTRIM('Hello ') |
|
LPAD |
字符串左侧填充。 |
LPAD('John',30,'*') |
|
LENGTH |
获取字符串长度。 |
LENGTH('Hello') |
|
UPPER |
字符串转大写。 |
UPPER('Hello') |
|
LOWER |
字符串转小写。 |
LOWER('HELLO') |
|
REVERSE |
字符串反转。 |
REVERSE('Hello') |
|
REGEXP_SPLIT |
字符串分割。 |
REGEXP_SPLIT('ONE,TWO,THREE', ',') |
|
REGEXP_REPLACE |
字符串替换。 |
REGEXP_REPLACE('abc123ABC', '[0-9]+', '#') |
|
REGEXP_SUBSTR |
获取正则子串。 |
REGEXP_SUBSTR('na1-appsrv35-sj35', '[^-]+') |
|
聚合 |
AVG |
获取平均数。 |
AVG(X) |
COUNT |
获取数据条数。 |
COUNT(*) |
|
MAX |
获取最大值。 |
MAX(NAME) |
|
MIN |
获取最小值。 |
MIN(NAME) |
|
SUM |
数字求合。 |
SUM(X) |
|
STDDEV_POP |
标准差。 |
STDDEV_POP( X ) |
|
STDDEV_SAMP |
样板标准差。 |
STDDEV_SAMP( X ) |
|
NTH_VALUE |
分组后的第几个值。 |
NTH_VALUE( name, 2 ) WITHIN GROUP (ORDER BY salary DESC) |
|
时间 |
NOW |
获取当前时间(DATE类型)。 |
NOW() |
CURRENT_TIME |
获取当前时间(TIME类型)。 |
CURRENT_TIME() |
|
CURRENT_DATE |
获取当前时间(DATE类型)。 |
CURRENT_DATE() |
|
TO_DATE |
字符串转DATE类型。 |
TO_DATE('1970-01-01', 'yyyy-MM-dd', 'GMT+1') |
|
TO_TIME |
字符串转TIME类型。 |
TO_TIME('1970-01-01', 'yyyy-MM-dd', 'GMT+1') |
|
TO_TIMESTAMP |
字符串转TIMESTAMP类型。 |
TO_TIMESTAMP('1970-01-01', 'yyyy-MM-dd', 'GMT+1') |
|
YEAR |
获取年。 |
YEAR(TO_DATE('2015-6-05')) |
|
MONTH |
获取月。 |
MONTH(TO_TIMESTAMP('2015-6-05')) |
|
WEEK |
获取星期。 |
WEEK(TO_TIME('2010-6-15')) |
|
HOUR |
获取小时。 |
HOUR(TO_TIMESTAMP('2015-6-05')) |
|
MINUTE |
获取分钟。 |
MINUTE(TO_TIME('2015-6-05')) |
|
SECOND |
获取秒。 |
SECOND(TO_DATE('2015-6-05')) |
|
数字 |
ROUND |
四舍五入(也可用于时间)。 |
ROUND(2.56) |
CEIL |
向上取整。 |
CEIL(2.34) |
|
FLOOR |
向下取整。 |
FLOOR(2.34) |
|
TRUNC |
向下取整(与FLOOR相同)。 |
TRUNC(2.34) |
|
TO_NUMBER |
字符串转数字。 |
TO_NUMBER('-123.33') |
|
RAND |
获取随机数。 |
RAND() |
|
数学 |
ABS |
求绝对值。 |
ABS(-1) |
SQRT |
|
SQRT(1.1) |
|
EXP |
|
EXP(-1) |
|
POWER |
|
POWER(2, 3) |
|
LN |
|
LN(3) |
|
LOG |
|
LOG(2, 3) |
|
数组 |
ARRAY_ELEM |
通过下标访问数组。 |
ARRAY_ELEM(ARRAY[1,2,3], 1) |
ARRAY_PREPEND |
指定位置插入数据到数组。 |
ARRAY_APPEND(ARRAY[1,2,3], 4) |
|
ARRAY_CAT |
连接数组。 |
ARRAY_CAT(ARRAY[1,2], ARRAY[3,4]) |
|
ARRAY_FILL |
数组填充。 |
ARRAY_FILL(1, 3) |
|
ARRAY_TO_STRING |
数组转字符串。 |
ARRAY_TO_STRING(ARRAY['a','b','c'], ',') |
|
ANY |
数组任意值满足条件。 |
10 > ANY(my_array) |
|
ALL |
数组所有值满足条件。 |
10 > ALL(my_array) |
|
其他 |
MD5 |
获取MD5码。 |
MD5(my_column) |
ENCODE |
编码字符串。 |
ENCODE(myNumber, 'BASE62') |
|
DECODE |
解码字符串。 |
DECODE('000000008512af277ffffff8', 'HEX') |