从官网的建表语句切入我的分析:
`CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name -- (Note: TEMPORARY available in Hive``0.14``.``0``and later)`
`[(col_name data_type [column_constraint_specification] [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)`
`| TIMESTAMP -- (Note: Available in Hive``0.8``.``0``and later)`
`| DECIMAL -- (Note: Available in Hive``0.11``.``0``and later)`
`| DECIMAL(precision, scale) -- (Note: Available in Hive``0.13``.``0``and later)`
`| DATE -- (Note: Available in Hive``0.12``.``0``and later)`
`| VARCHAR -- (Note: Available in Hive``0.12``.``0``and later)`
`| CHAR -- (Note: Available in Hive``0.13``.``0``and later)`
`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, ... > -- (Note: Available in Hive``0.7``.``0``and later)`
`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``] -- (Note: Available in Hive``0.13``and later)`
`| SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]`
`file_format:`
`: SEQUENCEFILE`
`| TEXTFILE -- (Default, depending on hive.``default``.fileformat configuration)`
`| RCFILE -- (Note: Available in Hive``0.6``.``0``and later)`
`| ORC -- (Note: Available in Hive``0.11``.``0``and later)`
`| PARQUET -- (Note: Available in Hive``0.13``.``0``and later)`
`| AVRO -- (Note: Available in Hive``0.14``.``0``and later)`
`| JSONFILE -- (Note: Available in Hive``4.0``.``0``and later)`
`| 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 ]`
外部表or管理表之分——external
分隔符设定——terminated
ROW FORMAT DELIMITED 分隔符设置开始语句
FIELDS TERMINATED BY:设置字段与字段之间的分隔符
COLLECTION ITEMS TERMINATED BY:设置一个复杂类型(array,struct)字段的各个item之间的分隔符
MAP KEYS TERMINATED BY:设置一个复杂类型(Map)字段的key value之间的分隔符
LINES TERMINATED BY:设置行与行之间的分隔符
例:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。