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



