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') |




