Hive学习(一)-表及数据库的创建删除基本操作

1.查看表结构字段

     hive>desc tablename;

     hive>desc formatted tablename;//显示tablename的详细表结构信息

     当使用formatted时,用于可以看到该表是外部表还是内部表(管理表)

     如果是内部表,则输出Table Type:             MANAGED_TABLE   
     如果是外部表,则输出Table Type:             EXTERNAL_TABLE

2.在Hive中执行Hadoop的dfs命令

    只需要将hadoop命令中的关键字'hadoop','hdfs'等去掉,如

    hive>dfs -ls /;

3.创建表

   hive默认是创建内部表(也称为管理表),即表的存放位置是在hive.metastore.warehouse.dir属性指定的地方。对于本地模式,该属性默认值是file:user/hive/warehouse,对于其他模式,默认存储路径是hdfs://namenoe_server/user/hive/warehouse。

  (1)创建内部表

  hive>create table tablename(字段1 数据类型,字段2 数据类型,字段3 数据类型,......,字段n 数据类型);

   其中基本数据类型如下:

      

数据类型长度例子
tinyint1byte有符合整数20
smalint2byte有符合整数20
int4byte有符合整数20
bigint8byte有符合整数20
boolean布尔类型,true或者falsetrue
float单精度浮点数3.14159
double双精度浮点数3.14159
string字符串,可以使用单引号或者双引号'now is the time',“for all good men”
timestamp(v0.8.0+)整数,浮点数或者字符串1327882394,
1327882394.123456789,和'2012-02-03    12:34:56.123456789'
binary(v0.8.0+)字节数组
 

   (2)创建外部表

      a.指定hdfs路径

       hive>create external table test(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION ‘/test/hello′;

      b.指定本地路径

      hive>create external table test(id int,name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION ‘file:///home/test′;


      注意:当使用like拷贝一张已经存在的表的表模式时:

      如hive>create table tablename1 like tablename2;如果tablename2(源表)是内部表,则tablename1也是内部表,如果tablename2是外部内,则tablename1也是外部表。

      如hive>create external tablename1 like tablename2,则生成的tablename1是外部表。

4.查看Hive中所包含的数据库

     hive>show databases;

     hive>show databases like 'abc.*';显示以abc开头的所有数据库

5.创建数据库

    hive>create database if not exists databasename;

    hive>create database databasename comment 'my database';//comment用于添加数据库的描述信息

6.删除数据库

   hive>drop database if exists databasename;

7.切换数据库

   hive>use databasename;

8.查看数据库信息

   hive>desc database databasename;

9.显示所有表

   hive>show tables;

   hive>show tables like 'abc.*';//显示以abc开头的所有表

   hive>show tables in databasename;//用于显示指定数据库中的所有表

10.删除表

   hive>drop table if exists tablename;

   对于管理表,表的元数据信息和表内的数据都会被删除。

   对于外部表,Hive并非认为其完全拥有这份数据。因此,删除该表并不会删除掉这份数据,但是描述表的元数据信   息会被删除掉。

11.修改表

   大多数的表属性可以通过alter table语句来进行修改。alter table仅仅会修改表元数据,表数据本身不会有任何修改。

   11.1表重命名

       hive>alter table old-tablename rename to new_tablename;

   11.2添加列

       hive>alter table tablename add columns(字段1 数据类型,字段2 数据类型,......,字段n 数据类型);

   11.3修改列信息

       alter table tablename change

   column old_colname new_colname col_type

   [first|after col_name]

       a.修改列名

       hive>alter table tablename change column old_colname new_colname string;//将列old_name修改为new_colname,类型为string

       b.修改列位置

       hive>alter table tablename change column col1_name col1_name string after col2_name;//将列col1_name移到   列col2_name后面

       注意:修改列信息的时候,即使字段名或者字段类型没有改变,用户也需要完全指定旧的字段名,并给处新的字段名及新的字段类型。

    11.4删除列

     hive>desc student;

     OK
     name                    string                                      
     age                       int                                         
     sex                       string                                      
     grade                    string                                      
     address                string

     现在删除grade列,执行:

hive> alter table student replace columns(name string,age int,sex string,address string);
OK
Time taken: 4.003 seconds
hive> desc student;
OK
name                	string              	                    
age                 	int                 	                    
sex                 	string              	                    
address             	string              	                    
Time taken: 0.78 seconds, Fetched: 4 row(s)

12.删除表数据

    hive>truncate table tablename;//删除内部表所有数据

       

    hive>insert overwrite table t_table1 select * from t_table1 where XXXX;

其中xxx是需要保留的数据的查询条件。

如果清空表,如下:
insert overwrite table t_table1 select * from t_table1 where 1=0;








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值