更新时间:2024-10-23 GMT+08:00

Sqlline接口介绍

可以直接使用sqlline.py在服务端对HBase进行SQL操作。Phoenix的sqlline接口与开源社区保持一致,请参见http://phoenix.apache.org/

Sqlline常用语法见表1,常用函数见表2,命令行使用可以参考Phoenix命令行操作介绍章节。

表1 Sqlline常用语法

命令

描述

示例

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;

表2 Sqlline常用函数

函数类型

函数

描述

示例

字符串

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