insert into/overwrite [table] 表名
[partition (分区字段=要增加的分区字段值,…);] //partition分区,增加到对应分区中
values(字段1的值,字段2的值,...),(...,...);
//普通插入,into插入数据,一个()代表一行,会启动mapreduce,table可写可不写没用
//overwrite覆盖,用()中的值把表中原有数据都覆盖掉,会启动mapreduce,table必须写
load data [local] inpath '路径' [overwrite] into table 表名
//向表中装载数据
//local写上表示从本地加载数据,不写表示从HDFS上面,路径可以写相对路径也可以写绝对路径
//在本地load相当于复制操作上传到hdfs上面然后,原文件不会消失
//在hdfs上load相当于是个剪切,原文件会消失
//overwrite写上覆盖,不写表示追加
删insert into/overwrite [table] 表1名 select 字段1, 字段2 from 表2名;
//查询导入,into插入数据,把表二中被查询到的数据插入到表1,table可写可不写没用
//overwrite覆盖,用表二中被查询到的数据覆盖表1,table必须写
//表一表二也可以是一张表
改insert into/overwrite [table] 表1名 select 字段1, 字段2 from 表2名; //与删除一样可以用这个命令
查1.和分组函数一同查询的字段,要求是group by后出现的字段
2.涉及到函数字段分组的,不能直接进行分组,需要嵌套成子表字段再进行分组
表的增删改查 增CREATE [EXTERNAL] TABLE [IF NOT EXISTS] 表名
//参数1表示外部的,不加表示为内部表,加了表示外部表 //参数2判断是否不存在
(字段1 字段1数据类型 [COMMENT 注释],字段2 字段2数据类型,...) //字段的注释
[COMMENT 表的注释] //表的注释
[PARTITIonED BY (字段1 字段1数据类型 [COMMENT 字段注释], ...)] //分区表用
[CLUSTERED BY (字段, 字段, ...) //分桶表用
[SORTED BY (字段 [ASC|DESC], ...)] INTO 桶数 BUCKETS] //分桶表用
[ROW FORMAT 规定行的语句] //行格式的限制
//规定行的语句例如
//按,分字段:delimited fields terminated by ','
//数组按_分其中字段:collection items terminated by '_'
//键值对数组中键值对按:分:map keys terminated by ':'
//每一行数据之间按照Enter换行分:lines terminated by 'n';
[STORED AS 文件格式] //文件格式,如text
[LOCATION ‘hdfs路径’] //表的hdfs上的存储路径,不指定默认在库下
[TBLPROPERTIES ('属性'='属性值', ...)] //表的其他属性
[AS 查询语句] //查询语句,配合其他的表的数据建表用
//如果要用AS加查询语句建表,则不能加(字段1 字段1数据类型,字段2 字段2数据类型...)
删drop table 表名; //删除表
改alter table 表名 set tblproperties('EXTERNAL'='TRUE'); //内部表修改为外部表,FALSE则外转内
alter table 表名 RENAME TO 新表名; //修改表名
增加 替换 更新 列的信息
增加
alter table 表名 ADD COLUMNS (字段名 字段数据类型 [COMMENT 注释], ...)
//ADD则为增加一列
替换---可以当删除用(删除列)
alter table 表名 REPLACE COLUMNS (字段名 字段数据类型 [COMMENT 注释], ...)
//REPLACE则为替换,把整张表的所有列与自己写的进行替换
//若是两列换一列,则只会显示一列的信息,实际上第二列依旧保存在HDFS上,改为两列则可以显示
//若是一列换两列,则多出来的列会显示null ps:若是数据类型不符等也会显示null
更新
alter table 表名 CHANGE [COLUMN] 旧的列名 新的列名 新的列的类型
[COMMENT 注释内容] [FIRST|AFTER column的名字]
//修改列名和列的类型,若是不想修改列的类型,就把原类型加上去(必须加上),则只会修改列名
增加 删除 表的分区
alter table 表名 add partition(分区字段=分区字段值');
//创建单个分区
alter table 表名 add
partition(分区字段1=分区字段值1) partition(分区字段2=分区字段值2);
//同时创建多个分区
alter table 表名 drop partition
(分区字段=分区字段值);
//删除单个分区
alter table 表名 drop
partition(分区字段1=分区字段值1), partition(分区字段2=分区字段值2);
//删除多个分区
查show tables; //查看所有表
desc formatted 表名; //查询表的信息
库的增删改查 增CREATE DATAbase [IF NOT EXISTS] 库名; //判断是否不存在
[COMMENT 注释]; //库的注释
[LOCATION 'hdfs下的路径']; //库的路径 不加就在默认路径下
[WITH DBPROPERTIES ('参数'='参数值')]; //库的其他属性
删drop database [if exists] 库名 [cascade];
//参数if exists为判断是否存在 //参数cascade为强制删除 可用于删除非空的库
改alter database 库名 set dbproperties('createtime'='20170830');
//修改只能修改表的其他属性,类似如上
查show databases; //显示数据库
show databases like 'Aran*'; //过滤显示数据库(例子为查询Aran开头的库)
desc database 库名; //查询数据库的信息(不显示其他属性)
desc database extended 库名; //显示数据库详细信息(可以显示其他属性)



