sql基础

CREATE DATABASE IF NOT EXISTS XXX COMMENT 'STORE MY DATA'
LOCATION '/usr/hive/xxx.db' WITH DBPROPERTIES('day'='2020-12-08','creator'='syc');
#1.创建数据库,with dbproperties 用于将自定义属性指定给数据库,可以使用describe database extended xxx;
ALTER DATABASE XXX SET DBPROPERTIES('thetime'='21:23');
#2.修改元数据属性
DROP DATABASE XXX RESTRICT;
DROP DATABASE XXX CASCADE;
#3.删除数据库,默认RESTRICT,可不写,如果数据库中有数据将执行失败,CASCADE会将数据库和内部表、外部表
SHOW DATABASE LIKE 'XXX'(xxx里可以用*匹配)
#4.列出数据库

数据类型

(1)基础数据类型:数值型、日期/时间型、字符型、布尔型、二进制型。varchar类型会按定义长度自动截取不会做出警告,Sttring比varchar更有灵活性。
(2)复杂数据类型:
a.数组:声明举例:name ARRAY<"tqy","syc">
访问:name[0]
b.Map:Key-Value,Key可以用是任何类型,包括复杂数据类型
声明举例:persion MAP<'string','int'>
persion MAP<"syc",27>
访问:persion("syc")
c.结构体:相当于对象,其中含有多个字段,这些字段可以包含复杂数据类型
声明举例:persion STRUCTname:STRING,age:INT,city:STRING,role:STRING
访问:persion.age
d.联合体:可以将不同的数据类型的元素存储在同一个字段的不同行中.
声明举例:contact UNIONTYPE<int,array,STRING,array>
访问:xxx.contact

内/外部表

(1)内部表(未被external修饰的表),数据由Hive自身管理,存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),删除内部表会直接删除元数据(metadata)及存储数据,对内部表的修改会将修改直接同步给元数据
(2)外部表(被external修饰的表),外部表数据由HDFS管理,存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里),删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除,对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)
此段取自:https://www.cnblogs.com/fnlingnzb-learner/p/12217162.html

建表

(1)CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name    
  [(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, ...)                 
     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 (...)]  
  ]
  [LOCATION hdfs_path]
  [TBLPROPERTIES (property_name=property_value, ...)]  
  [AS select_statement];   -- (不支持外部表)
 
(2)CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name
  LIKE existing_table_or_view_name
  [LOCATION hdfs_path];



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    //普通的文本文件格式
  | RCFILE      //行列存储相结合的文件
  | ORC         
  | PARQUET     
  | AVRO        
  | JSONFILE   //JSON文件
  | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classname //自定义文件格式
 
posted on 2022-05-16 18:12  xc川  阅读(0)  评论(0)    收藏  举报