文档首页 > > SQL语法参考> 批作业SQL语法> 批作业SQL语法概览

批作业SQL语法概览

分享
更新时间: 2020/08/03 GMT+08:00

本章节介绍了目前DLI所提供的Spark SQL语法列表。参数说明,示例等详细信息请参考具体的语法说明。

数据库相关语法

表1 数据库相关语法

功能描述

语法格式

创建数据库

1
2
3
CREATE [DATABASE | SCHEMA] [IF NOT EXISTS] db_name
  [COMMENT db_comment]
  [WITH DBPROPERTIES (property_name=property_value, ...)];

删除数据库

1
DROP [DATABASE | SCHEMA] [IF EXISTS] db_name [RESTRICT|CASCADE];

查看指定数据库

1
DESCRIBE DATABASE [EXTENDED] db_name;

查看所有数据库

1
SHOW [DATABASES | SCHEMAS] [LIKE regex_expression];

创建OBS表相关语法

表2 创建OBS表相关语法

功能描述

语法格式

使用DataSource语法创建OBS表

1
2
3
4
5
6
7
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name 
  [(col_name1 col_type1 [COMMENT col_comment1], ...)]
  USING file_format 
  [OPTIONS (path 'obs_path', key1=val1, key2=val2, ...)] 
  [PARTITIONED BY (col_name1, col_name2, ...)]
  [COMMENT table_comment]
  [AS select_statement];

使用Hive语法创建OBS表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name 
  [(col_name1 col_type1 [COMMENT col_comment1], ...)]
  [COMMENT table_comment] 
  [PARTITIONED BY (col_name2 col_type2, [COMMENT col_comment2], ...)] 
  [ROW FORMAT row_format]
  [STORED AS file_format] 
  LOCATION 'obs_path'
  [AS select_statement];

row_format:
  : SERDE serde_cls [WITH SERDEPROPERTIES (key1=val1, key2=val2, ...)]
  | DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]]
      [COLLECTION ITEMS TERMINATED BY char]
      [MAP KEYS TERMINATED BY char]
      [LINES TERMINATED BY char]
      [NULL DEFINED AS char]

创建DLI表相关语法

表3 创建DLI表相关语法

功能描述

语法格式

使用DataSource语法创建DLI表

1
2
3
4
5
6
7
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name 
  [(col_name1 col_type1 [COMMENT col_comment1], ...)]
  USING file_format 
  [OPTIONS (key1=val1, key2=val2, ...)] 
  [PARTITIONED BY (col_name1, col_name2, ...)]
  [COMMENT table_comment]
  [AS select_statement];

使用Hive语法创建DLI表

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
CREATE TABLE [IF NOT EXISTS] [db_name.]table_name 
  [(col_name1 col_type1 [COMMENT col_comment1], ...)]
  [COMMENT table_comment] 
  [PARTITIONED BY (col_name2 col_type2, [COMMENT col_comment2], ...)] 
  [ROW FORMAT row_format]
  STORED AS file_format 
  [TBLPROPERTIES (key1=val1, key2=val2, ...)]
  [AS select_statement];

row_format:
  : SERDE serde_cls [WITH SERDEPROPERTIES (key1=val1, key2=val2, ...)]
  | DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]]
      [COLLECTION ITEMS TERMINATED BY char]
      [MAP KEYS TERMINATED BY char]
      [LINES TERMINATED BY char]
      [NULL DEFINED AS char]

删除表相关语法

表4 删除表相关语法

功能描述

语法格式

删除表

1
DROP TABLE [IF EXISTS] [db_name.]table_name;

查看表相关语法

表5 查看表相关语法

功能描述

语法格式

查看所有表

1
SHOW TABLES [IN | FROM db_name] [LIKE regex_expression];

查看建表语句

1
SHOW CREATE TABLE table_name;

查看表属性

1
SHOW TBLPROPERTIES table_name [('property_name')];

查看指定表所有列

1
SHOW COLUMNS {FROM | IN} table_name [{FROM | IN} db_name];

查看指定表所有分区

1
2
SHOW PARTITIONS [db_name.]table_name
  [PARTITION partition_specs];

查看表统计信息

1
DESCRIBE [EXTENDED|FORMATTED] [db_name.]table_name;

修改表相关语法

表6 修改表相关语法

功能描述

语法格式

添加列

1
ALTER TABLE [db_name.]table_name ADD COLUMNS (col_name1 col_type1 [COMMENT col_comment1], ...);

分区表相关语法

表7 分区表相关语法

功能描述

语法格式

添加分区(只支持OBS表)

1
2
3
4
5
ALTER TABLE table_name ADD [IF NOT EXISTS]
  PARTITION partition_specs1
  [LOCATION 'obs_path1']
  PARTITION partition_specs2
  [LOCATION 'obs_path2'];

重命名分区

1
2
3
ALTER TABLE table_name
  PARTITION partition_specs
  RENAME TO PARTITION partition_specs;

删除分区

1
2
3
ALTER TABLE [db_name.]table_name
  DROP [IF EXISTS]
  PARTITION partition_spec1[,PARTITION partition_spec2,...];

修改表分区位置(只支持OBS表)

1
2
3
ALTER TABLE table_name
  PARTITION partition_specs
  SET LOCATION obs_path;

修改表分区SerDe属性(只支持OBS表)

1
2
3
4
ALTER TABLE table_name
 [PARTITION partition_specs]
 SET SERDE serde
 [WITH SERDEPROPERTIES (property_name=property_value,...)];
ALTER TABLE table_name
 [PARTITION partition_specs]
 SET SERDEPROPERTIES (property_name=property_value,...);

更新表分区信息(只支持OBS表)

1
2
MSCK REPAIR TABLE table_name;
ALTER TABLE table_name RECOVER PARTITIONS;

导入数据相关语法

表8 导入数据相关语法

功能描述

语法格式

导入数据

1
2
LOAD DATA INPATH 'folder_path' INTO TABLE [db_name.]table_name
  OPTIONS(property_name=property_value, ...);

插入数据相关语法

表9 插入数据相关语法

功能描述

语法格式

插入数据

  • 将SELECT查询结果插入到表中
    1
    2
    INSERT INTO [TABLE] [db_name.]table_name
      [PARTITION part_spec] select_statement;
    
    1
    2
    INSERT OVERWRITE TABLE [db_name.]table_name
      [PARTITION part_spec] select_statement;
    
    part_spec:  
      : (part_col_name1=val1 [, part_col_name2=val2, ...])
  • 将某条数据插入到表中
    1
    2
    INSERT INTO [TABLE] [db_name.]table_name
      [PARTITION part_spec] VALUES values_row [, values_row ...];
    
    1
    2
    INSERT OVERWRITE TABLE [db_name.]table_name
      [PARTITION part_spec] VALUES values_row [, values_row ...];
    
    values_row:
      : (val1 [, val2, ...])

清空数据相关语法

表10 清空数据相关语法

功能描述

语法格式

清空数据

1
TRUNCATE TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)];

导出查询结果相关语法

表11 导出查询结果相关语法

功能描述

语法格式

导出查询结果

1
2
3
4
INSERT OVERWRITE DIRECTORY path
  USING file_format
  [OPTIONS(key1=value1)]
  select_statement;

跨源连接表相关语法

表12 HBase表相关语法

功能描述

语法格式

创建DLI表关联HBase

  • 单个RowKey
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME (
      ATTR1 TYPE,
      ATTR2 TYPE,
      ATTR3 TYPE)
      USING [CLOUDTABLE | HBASE] OPTIONS (
      'ZKHost'='xx',
      'TableName'='TABLE_IN_CLOUDTABLE',
      'RowKey'='ATTR1',
      'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2');
    
  • 组合RowKey
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME (
      ATTR1 String,
      ATTR2 String,
      ATTR3 TYPE)
      USING [CLOUDTABLE | HBASE] OPTIONS (
      'ZKHost'='xx',
      'TableName'='TABLE_IN_CLOUDTABLE',
      'RowKey'='ATTR1:2, ATTR2:10',
      'Cols'='ATTR2:CF1.C1, ATTR3:CF1.C2',
      'krbauth'='KRB_AUTH_NAME');
    

插入数据至HBase表

1
2
3
4
5
6
7
INSERT INTO DLI_TABLE
  SELECT field1,field2...
  [FROM DLI_TEST]
  [WHERE where_condition]
  [LIMIT num]
  [GROUP BY field]
  [ORDER BY field] ...;

查询HBase表

1
SELECT * FROM table_name LIMIT number;
表13 OpenTSDB表相关语法

功能描述

语法格式

创建DLI表关联OpenTSDB

1
2
3
4
5
CREATE TABLE [IF NOT EXISTS] UQUERY_OPENTSDB_TABLE_NAME
  USING OPENTSDB OPTIONS (
  'host' = 'xx;xx',
  'metric' = 'METRIC_NAME',
  'tags' = 'TAG1,TAG2');

插入数据至OpenTSDB

1
INSERT INTO TABLE TABLE_NAME SELECT * FROM DLI_TABLE;
1
INSERT INTO TABLE TABLE_NAME VALUES(XXX);

查询OpenTSDB表

1
SELECT * FROM table_name LIMIT number;
表14 DWS表相关语法

功能描述

语法格式

创建DLI表关联DWS

1
2
3
4
5
6
CREATE TABLE [IF NOT EXISTS] TABLE_NAME
  USING JDBC OPTIONS (
  'url'='xx',
  'dbtable'='db_name_in_DWS.table_name_in_DWS',
  'passwdauth' = 'xxx',
  'encryption' = 'true');

插入数据至DWS表

  • 将SELECT查询结果插入到表中:
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    
  • 将某条数据插入到表中:
    1
    2
    INSERT INTO DLI_TABLE
      VALUES values_row [, values_row ...];
    

查询DWS表

1
SELECT * FROM table_name LIMIT number;
表15 RDS表相关语法

功能描述

语法格式

创建DLI表关联RDS

1
2
3
4
5
6
7
CREATE TABLE [IF NOT EXISTS] TABLE_NAME
  USING JDBC OPTIONS (
  'url'='xx',
  'driver'='DRIVER_NAME',
  'dbtable'='db_name_in_RDS.table_name_in_RDS',
  'user'='YOUR_RDS_USER_NAME',
  'password'='YOUR_PASS_WORD');

插入数据至RDS表

  • 将SELECT查询结果插入到表中:
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    
  • 将某条数据插入到表中:
    1
    2
    INSERT INTO DLI_TABLE
      VALUES values_row [, values_row ...];
    

查询RDS表

1
SELECT * FROM table_name LIMIT number;
表16 CSS表相关语法

功能描述

语法格式

创建DLI表关联CSS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
  FIELDNAME1 FIELDTYPE1,
  FIELDNAME2 FIELDTYPE2)
  USING CSS OPTIONS (
  'es.nodes'='xx',
  'resource'='type_path_in_CSS',
  'pushdown'='true',
  'strict'='false',
  'batch.size.entries'= '1000',
  'batch.size.bytes'= '1mb',
  'es.nodes.wan.only' = 'true',
  'es.mapping.id' = 'FIELDNAME');

插入数据至CSS表

  • 将SELECT查询结果插入到表中:
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    
  • 将某条数据插入到表中:
    1
    2
    INSERT INTO DLI_TABLE
      VALUES values_row [, values_row ...];
    

查询CSS表

1
SELECT * FROM table_name LIMIT number;
表17 DCS表相关语法

功能描述

语法格式

创建DLI表关联DCS

  • 指定Key
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
        FIELDNAME1 FIELDTYPE1,
        FIELDNAME2 FIELDTYPE2)
      USING REDIS OPTIONS (
      'host'='xx',
      'port'='xx',
      'passwdauth' = 'xxx',
      'encryption' = 'true',
      'table'='namespace_in_redis:key_in_redis',
      'key.column'= 'FIELDNAME1'
    );
    
  • 通配key
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
        FIELDNAME1 FIELDTYPE1,
        FIELDNAME2 FIELDTYPE2)
      USING REDIS OPTIONS (
      'host'='xx',
      'port'='xx',
      'passwdauth' = 'xxx',
      'encryption' = 'true',
      'keys.pattern'='key*:*',
      'key.column'= 'FIELDNAME1'
    );
    

插入数据至DCS表

  • 将SELECT查询结果插入到表中:
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    
  • 将某条数据插入到表中:
    1
    2
    INSERT INTO DLI_TABLE
      VALUES values_row [, values_row ...];
    

查询DCS表

1
SELECT * FROM table_name LIMIT number;
表18 DDS表相关语法

功能描述

语法格式

创建DLI表关联DDS

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
CREATE TABLE [IF NOT EXISTS] TABLE_NAME(
    FIELDNAME1 FIELDTYPE1,
    FIELDNAME2 FIELDTYPE2)
  USING MONGO OPTIONS (
  'url'='IP:PORT[,IP:PORT]/[DATABASE][.COLLECTION][AUTH_PROPERTIES]',
  'database'='xx',
  'collection'='xx',
  'passwdauth' = 'xxx',
  'encryption' = 'true'
);

插入数据至DDS表

  • 将SELECT查询结果插入到表中:
    1
    2
    3
    4
    5
    6
    7
    INSERT INTO DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    
  • 覆盖插入数据
    1
    2
    3
    4
    5
    6
    7
    INSERT OVERWRITE TABLE DLI_TABLE
      SELECT field1,field2...
      [FROM DLI_TEST]
      [WHERE where_condition]
      [LIMIT num]
      [GROUP BY field]
      [ORDER BY field] ...;
    

查询DDS表

1
SELECT * FROM table_name LIMIT number;

视图相关语法

表19 视图相关语法

功能描述

语法格式

创建视图

1
CREATE [OR REPLACE] VIEW view_name AS select_statement;

删除视图

1
DROP VIEW [IF EXISTS] [db_name.]view_name;

查看计划相关语法

表20 查看计划相关语法

功能描述

语法格式

查看计划

1
EXPLAIN [EXTENDED | CODEGEN] statement;

数据权限相关语法

表21 数据权限相关语法

功能描述

语法格式

创建角色

1
CREATE ROLE [db_name].role_name;

删除角色

1
DROP ROLE [db_name].role_name;

绑定角色

1
GRANT ([db_name].role_name,...) TO (user_name,...);

解绑角色

1
REVOKE ([db_name].role_name,...) FROM (user_name,...);

显示角色

1
SHOW [ALL] ROLES [user_name];

分配权限

1
GRANT (privilege,...) ON (resource,..) TO ((ROLE [db_name].role_name) | (USER user_name)),...);

回收权限

1
REVOKE (privilege,...) ON (resource,..) FROM ((ROLE [db_name].role_name) | (USER user_name)),...);

显示已授权限

1
SHOW GRANT ((ROLE [db_name].role_name) | (USER user_name)) ON resource;

显示所有角色和用户的绑定关系

1
SHOW PRINCIPALS ROLE;

自定义函数相关语法

表22 自定义函数相关语法

功能描述

语法格式

创建函数

1
2
3
4
5
CREATE [TEMPORARY] FUNCTION [db_name.]function_name AS class_name
  [USING resource,...]

resource: 
  : (JAR|FILE|ARCHIVE)file_uri

删除函数

1
DROP [TEMPORARY] FUNCTION [IF EXISTS] [db_name.] function_name;

显示函数详情

1
DESCRIBE FUNCTION [EXTENDED] [db_name.] function_name;

显示所有函数

1
SHOW [USER|SYSTEM|ALL] FUNCTIONS ([LIKE] regex | [db_name.] function_name);
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问