1、数据库
1)创建数据库
1 create database database_name;
2)创建一个数据库并检查是否存在,不存在才创建
1 create databases if not exists database_name;
3)创建一个数据库,并加上注释
1 create database if not exists database_name comment '这是创建数据库的备注';
4)创建数据库,指定数据库在HDFS上存放的位置
1 create database if not exists database_name location '数据库存放路径:/mnt/database_name.db';
5)查看当前所用的数据库
select current_database();
2、表
if not exists :表示检查所创建的表或库是否存在,不存在才会创建
row format delimited fields terminated by ',' : 表示行以 ‘,’ 进行分割
partitioned by (data dtring) :表示以时间进行分区
1)创建内部表
创建内部表,以 ',' 进行分割;
1 create table table_name( 2 id int, 3 name string, 4 age string 5 ) 6 row format delimited fields terminated by ',';
根据查询结果创建表,会将查询的数据放入到新表;
1 create table table_name1 as select id, name, age from table_name2;
根据已经存在的表结构创建表,只是结构一样,新表无数据;
1 create table table_name1 like table_name;
2)创建外部表
1 create external table external_table_name( 2 id int, 3 name string, 4 age string 5 ) 6 row format delimited 7 fields terminated by ',';
向外部表中导入数据
1 load data local inpath '/home/table_data.txt' into table external_table_name;
3)创建分区表
创建分区表
1 create external table exter_table_name( 2 id int, 3 name string 4 ) 5 partitioned by (age string) # (创建分区表) 6 row format delimited fields terminated by ',' 7 location '/home/exter_table_name'; # (指定外部表的路径)
创建二级分区表
在city目录下出现data的二级目录
1 create external table exter_table_name(id int, name string) 2 partitioned by (city string, data string) 3 row format delimited fields terminated by ',';
建立分区表后,需要增加分区
1 alter table exter_table_name add pertition(age='20') 2 location '/home/exter_table_name_20';
通过where快速查询
1 select * from exter_table_name where age=20;
4)向表中插入数据
原表为分区表,从其他表中导入数据,不覆盖表中的元数据
insert into table database_name.table_name1
partition(create_date='1990-01-01') select id, name, age from database_name.table_name2 where id > 10;
原表为非分区表,从其他表中导入数据,覆盖表中的元数据
insert overwrite table database_name.table_name1select id, name, age from database_name.table_name2 where id > 10;
从文件中向表批量插入数据
load data local inpath '/root/data.txt' overwrite into table table_name;