Sqlline接口介绍
可以直接使用sqlline.py在服务端对HBase进行SQL操作。Phoenix的sqlline接口与开源社区保持一致,请参见https://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') |






