1 创建表
1.1 语法
CREATE [TEMPORARY] [EXTERNAL
] TABLE [IF NOT EXISTS] [db_name
.]table_name
[(col_name data_type
[COMMENT col_comment
], ...)]
[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
]
[
[ROW FORMAT row_format
]
[STORED
AS file_format
]
| STORED
BY 'storage.handler.class.name' [WITH SERDEPROPERTIES
(...)]
]
[LOCATION hdfs_path
]
[TBLPROPERTIES
(property_name
=property_value
, ...)]
[AS select_statement
]
CREATE [TEMPORARY] [EXTERNAL
] TABLE [IF NOT EXISTS] [db_name
.]table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path
];
1.2 相关属性
data_type
: primitive_type
| array_type
| map_type
| struct_type
| union_type
primitive_type
:
TINYINT
| SMALLINT
| INT
| BIGINT
| BOOLEAN
| FLOAT
| DOUBLE
| DOUBLE PRECISION
| STRING
| BINARY
| TIMESTAMP
| DECIMAL
| DECIMAL(precision, scale
)
| DATE
| VARCHAR
| CHAR
array_type
: ARRAY
< data_type
>
map_type
: MAP
< primitive_type
, data_type
>
struct_type
: STRUCT
< col_name : data_type
[COMMENT col_comment
], ...>
union_type
: UNIONTYPE
< data_type
, data_type
, ... >
row_format
: 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]
| SERDE serde_name
[WITH SERDEPROPERTIES
(property_name
=property_value
, property_name
=property_value
, ...)]
file_format:
: SEQUENCEFILE
| TEXTFILE
| RCFILE
| ORC
| PARQUET
| AVRO
| JSONFILE
| INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname
column_constraint_specification:
:
[ PRIMARY KEY|UNIQUE|NOT NULL|DEFAULT [default_value
]|CHECK [check_expression
] ENABLE|DISABLE NOVALIDATE RELY
/NORELY
]
default_value:
:
[ LITERAL
|CURRENT_USER()|CURRENT_DATE()|CURRENT_TIMESTAMP()|NULL ]
constraint_specification:
:
[, PRIMARY KEY (col_name
, ...) DISABLE NOVALIDATE RELY
/NORELY
]
[, PRIMARY KEY (col_name
, ...) DISABLE NOVALIDATE RELY
/NORELY
]
[, CONSTRAINT constraint_name
FOREIGN KEY (col_name
, ...) REFERENCES table_name
(col_name
, ...) DISABLE NOVALIDATE
[, CONSTRAINT constraint_name
UNIQUE (col_name
, ...) DISABLE NOVALIDATE RELY
/NORELY
]
[, CONSTRAINT constraint_name
CHECK [check_expression
] ENABLE|DISABLE NOVALIDATE RELY
/NORELY
]
1.3 实例
CREATE TABLE IF NOT EXISTS `users
`.`info
`(
`id
` int COMMENT 'user id',
`name
` string
COMMENT 'user name',
`age
` int COMMENT 'user age'
) COMMENT 'user info'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
LOAD DATA LOCAL INPATH
'' INTO TABLE table_name
;
CREATE EXTERNAL
TABLE IF NOT EXISTS `users
`.`info_1
`(
`id
` int COMMENT 'user id',
`name
` string
COMMENT 'user name',
`age
` int COMMENT 'user age'
) COMMENT 'user info'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION
'hdfs_path';
LOAD DATA LOCAL INPATH
'/home/user.txt' INTO TABLE `users
`.`info_1
`;
CREATE TEMPORARY TABLE IF NOT EXISTS `users
`.`info_2
`(
`id
` int COMMENT 'user id',
`name
` string
COMMENT 'user name',
`age
` int COMMENT 'user age'
) COMMENT 'user info'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',';
LOAD DATA LOCAL INPATH
'/home/user.txt' INTO TABLE `users
`.`info_2
`;
总结:
当我们删除了内部表时,元数据和数据都会被删除当我们删除了外部表时,元数据会删除,数据不会被删除临时表没有元数据,而且数据也没有存放到HDFS中,他的数据都在内存里面当Hive关闭后,临时表会消失
2 修改表
2.1 语法
1. 重命名表
ALTER TABLE table_name
RENAME TO new_table_name
;
2. Alter Table Properties
ALTER TABLE table_name
SET TBLPROPERTIES table_properties
;
table_properties:
(property_name
= property_value
, property_name
= property_value
, ... )
2.1 修改表的批注信息
ALTER TABLE table_name
SET TBLPROPERTIES
('comment' = new_comment
);
3 修改列
3.1 语法
ALTER TABLE table_name CHANGE
[COLUMN] col_old_name col_new_name column_type
[COMMENT col_comment
] [FIRST|AFTER column_name
] [CASCADE];
ALTER TABLE table_name
ADD|REPLACE COLUMNS (col_name data_type
[COMMENT col_comment
], ...)
[CASCADE]
3.2 实例
ALTER TABLE `user_1
`.`t_user
` CHANGE id uid
int;
ALTER TABLE `user_1
`.`t_user
` CHANGE uid uid string
;
ALTER TABLE `user_1
`.`t_user
` ADD COLUMNS (birth string
);
ALTER TABLE `user_1
`.`t_user
` REPLACE COLUMNS (uid string
,name string
);
4 添加数据
4.1 语法
LOAD DATA [LOCAL] INPATH
'filepath' [OVERWRITE
] INTO TABLE tablename
[PARTITION (partcol1
=val1
, partcol2
=val2
...)]
INSERT OVERWRITE
TABLE tablename1
[PARTITION (partcol1
=val1
, partcol2
=val2
...) [IF NOT EXISTS]]
select_statement1
FROM from_statement
;
INSERT INTO TABLE tablename1
[PARTITION (partcol1
=val1
, partcol2
=val2
...)] select_statement1
FROM from_statement
;
4.2 实例
LOAD DATA LOCAL INPATH
'/home/user.txt' INTO TABLE `hive
`.`t_1
`;
LOAD DATA INPATH
'/user.txt' INTO TABLE `hive
`.`t_1
`;
CREATE TABLE `hive
`.`t_user4
` LIKE `hive
`.`t_user3
`;
INSERT OVERWRITE
TABLE `hive
`.`t_user4
` IF NOT EXISTS
SELECT * FROM `hive
`.`t_user3
`;
local是从本地文件系统中复制数据到表目录下不加local是从HDFS文件系统中剪切数据到表目录下load方式加载数据只能用于表是textfile格式的情况
5 多数据插入
5.1 语法
FROM from_statement
INSERT OVERWRITE
TABLE tablename1
[PARTITION (partcol1
=val1
, partcol2
=val2
...) [IF NOT EXISTS]] select_statement1
[INSERT OVERWRITE
TABLE tablename2
[PARTITION ... [IF NOT EXISTS]] select_statement2
]
[INSERT INTO TABLE tablename2
[PARTITION ...] select_statement2
] ...;
5.2 实例
CREATE TABLE `hive
`.`t_user5
` LIKE `hive
`.`t_user3
`;
CREATE TABLE `hive
`.`t_user6
` LIKE `hive
`.`t_user3
`;
FROM `hive
`.`t_user3
`
INSERT OVERWRITE
TABLE `hive
`.`t_user5
` IF NOT EXISTS SELECT *
INSERT OVERWRITE
TABLE `hive
`.`t_user6
` IF NOT EXISTS SELECT *
;
6 Write Data
6.1 语法
INSERT OVERWRITE
[LOCAL] DIRECTORY directory1
[ROW FORMAT row_format
] [STORED
AS file_format
]
SELECT ... FROM ...
6.2 实例
INSERT OVERWRITE DIRECTORY
'/write'
ROW FORMAT DELIMITED
SELECT * FROM `hive
`.`t_user5
`;