Hive官方使用手冊——DDL使用說明
Hive Data Definition Language
概述
這裡是HiveQL DDL語法說明文件 包括:
- CREATE DATABASE/SCHEMA, TABLE, VIEW, FUNCTION, INDEX
- DROP DATABASE/SCHEMA, TABLE, VIEW, INDEX
- TRUNCATE TABLE
- ALTER DATABASE/SCHEMA, TABLE, VIEW
- MSCK REPAIR TABLE (or ALTER TABLE RECOVER PARTITIONS)
- SHOW DATABASES/SCHEMAS, TABLES, TBLPROPERTIES, VIEWS, PARTITIONS, FUNCTIONS, INDEX[ES], COLUMNS, CREATE TABLE
- DESCRIBE DATABASE/SCHEMA, table_name, view_name
PARTITION 語句通常是TABLE語句的選項, SHOW PARTITIONS除外。
Keywords, Non-reserved Keywords and Reserved Keywords
所有關鍵字 | ||
---|---|---|
版本號 | 非保留關鍵字 | 保留的關鍵字 |
Hive 1.2.0 |
|
|
Hive 2.0.0 | removed: added: | added: |
Hive 2.1.0 | added: | added: |
Hive 2.2.0 | added: | added: |
Hive 3.0.0 | added: TIMESTAMPTZ, ZONE | added: TIME, NUMERIC |
版本資訊
REGEXP and RLIKE are non-reserved keywords prior to Hive 2.0.0 and reserved keywords starting in Hive 2.0.0 (HIVE-11703).
引用它們,那麼保留的關鍵字允許被作為識別符號(0.13.0 及之後的版本,請查閱 HIVE-6013).。 大多數關鍵字是通過HIVE-6617保留的,以減少語法上的歧義(version 1.2.0 and later)。仍然有兩種方法供使用者想使用這些保留關鍵字識別符號:(1)使用引用識別符號;(2)設定hive.support.sql11.reserved.keywords = false。(version 2.1.0 and earlier)
Create/Drop/Alter/Use Database
Create Database
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_name=property_value, ...)]; |
SCHEMA 和DATABASE 的使用是可互換的——它們的意思是一樣的。CREATE DATABASE 是在Hive 0.6中增加的(HIVE-675). WITH DBPROPERTIES 子句是在Hive 0.7中增加的 (HIVE-1836).
Drop Database
DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; |
SCHEMA 和DATABASE 的使用是可互換的——它們的意思是一樣的。 DROP DATABASE 是在Hive 0.6中增加的 (HIVE-675)。預設行為是限制的,如果資料庫不是空的,那麼DROP資料庫將會失敗。 To drop the tables in the database as well, use DROP DATABASE ... CASCADE(級聯). 若要刪除資料庫中的表,請使用 DROP DATABASE ... CASCADE。在Hive 0.8中添加了對RESTRICT和CASCADE的支援。(HIVE-2090).
Alter Database
ALTER (DATABASE|SCHEMA) database_name SET DBPROPERTIES (property_name=property_value, ...); -- (Note: SCHEMA added in Hive 0.14 . 0 ) ALTER (DATABASE|SCHEMA) database_name SET OWNER [USER|ROLE] user_or_role; -- (Note: Hive 0.13 . 0 and later; SCHEMA added in Hive 0.14 . 0 ) ALTER (DATABASE|SCHEMA) database_name SET LOCATION hdfs_path; -- (Note: Hive 2.2 . 1 , 2.4 . 0 and later) |
SCHEMA 和DATABASE 的使用是可互換的——它們的意思是一樣的。ALTER SCHEMA是在Hive 0.6中增加的(HIVE-6601).
ALTER DATABASE ... SET LOCATION語句不會移動資料庫的內容到指定的新目錄中。它不改變指定資料庫中任何表、分割槽的相關路徑。它只改變預設的父目錄,只會更改資料庫中新增加的表。這個操作類似於改變表的位置但是不移動現存的分割槽位置。
資料庫的其它元資料都不可以改變。
Use Database
USE database_name; USE DEFAULT; |
USE 為所有後續的HiveQL語句設定當前資料庫。要還原到預設資料庫,使用關鍵字“default”而不是資料庫名。檢查當前正在使用哪個資料庫: (as of Hive 0.13.0).
USE database_name
是在 Hive 0.6 (HIVE-675)中增加的。
Create/Drop/Truncate Table
Create Table
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name [(col_name data_type [COMMENT col_comment], ... [constraint_specification])] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [SKEWED BY (col_name, col_name, ...) -- (Note: Available in Hive 0.10 . 0 and later)] ON ((col_value, col_value, ...), (col_value, col_value, ...), ...) [STORED AS DIRECTORIES] [ [ROW FORMAT row_format] [STORED AS file_format] | STORED BY 'storage.handler.class.name' [WITH SERDEPROPERTIES (...)] -- (Note: Available in Hive 0.6 . 0 and later) ] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)] -- (Note: Available in Hive 0.6 . 0 and later) [AS select_statement]; -- (Note: Available in Hive 0.5 . 0 and later; not supported for external tables) CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name LIKE existing_table_or_view_name [LOCATION hdfs_path]; data_type : primitive_type | array_type | map_type | struct_type | union_type -- (Note: Available in Hive 0.7 . 0 and later) primitive_type : TINYINT | SMALLINT | INT | BIGINT | BOOLEAN | FLOAT | DOUBLE | DOUBLE PRECISION -- (Note: Available in Hive 2.2 . 0 and later) | STRING | BINARY -- (Note: Available in Hive 0.8 . 0 and later)
|